华为 合唱队 算法

题目描述

计算最少出列多少位同学,使得剩下的同学排成合唱队形

说明:

N位同学站成一排,音乐老师要请其中的(N-K)位同学出列,使得剩下的K位同学排成合唱队形。 
合唱队形是指这样的一种队形:设K位同学从左到右依次编号为1,2…,K,他们的身高分别为T1,T2,…,TK,   则他们的身高满足存在i(1<=i<=K)使得T1<T2<......<Ti-1<Ti>Ti+1>......>TK。 
你的任务是,已知所有N位同学的身高,计算最少需要几位同学出列,可以使得剩下的同学排成合唱队形。

输入描述:

整数N

输出描述:

最少需要几位同学出列

输入例子:
8
186 186 150 200 160 130 197 200
输出例子:
4

最少几位同学出列,可以转换成查找 数组中,每个数组元素的最长增序列 跟最长减序列
package org.huawei.test;

import org.junit.Test;

import java.util.Arrays;

/**
 * Created by Administrator on 2016/10/7 0007.
 */
public class man {//合唱团

    @Test
    public  void que(){
        int [] high = {186,186,150,200,160,130,197,200};//input输入

        int [] tagUp = new int[high.length];
        int [] tagDown = new int[high.length];
        int [] tag = new int[high.length];
        for ( int i = 0 ; i < high.length;i++){
            for(int j = i ; j < high.length; j++){//求得每个位置的最长增序
                if (j == high.length-1){
                    break;
                }
                if (high[j] > high[j+1]){
                    tagUp[i] +=1;
                }else{
                    break;
                }
            }
            for (int j = i; j > 0; j--){//求得每个位置的最长减序
                if (j == 0){
                    break;
                }
                if (high[j]>high[j-1]){
                    tagDown[i] +=1;
                }else{
                    break;
                }
            }
        }
      for(int i = 0; i < tag.length;i++){
          if (tagDown[i] == 0 || tagUp[i] ==0){
              tag[i] = 0;
          }else{
              tag[i] = tagUp[i] + tagDown[i];
          }
      }
      for(int tmp : tag){
          System.out.println(tmp);
      }

      Arrays.sort(tag);
        System.out.println(tag.length-tag[tag.length-1]-1);
    }
}

预计有些极端情况没有被想到

时间: 2024-08-09 08:38:06

华为 合唱队 算法的相关文章

华为面试算法

一面算法: 有一串类似右面的字符串,在字符串基础上调整,使*全部位于末尾,其他字符保持原来前后顺序,不能开辟新的空间,效率要高,String str="dhdh*cbcb*xhx***dhdh*". 思考半分钟, "java中字符串是不可变的啊!" "不可变?" "是啊,不能修改" "那你就当成stringbuilder" 无语...半分钟后,写了个时间复杂度n方级别的算法... "两重循环啊&q

华为笔试算法题1

三道题目基本上都和字符串操作相关. 1. 给定一组元素个数不定的字符串数组,每个字符串的长度不定:请统计出该字符串数组中的英文字母子串.数字子串和其他字符子串的总数: 输出为以","符号分隔3个数值,分别代表英文字母子串.数字子串和其他字符子串的数量: 实现时无需考虑非法输入. 输入描述:输入为:字符串数组 例子:abcd1244!! BKMKLK0987% 输出描述:输出为以","符号分隔3个数值,分别代表英文字母子串.数字子串和其他字符子串的数量. 输入例子:a

华为教小米如何做人:雷军吹牛逼遭通信博士打脸

小米这次是真拼了,雷军现在不说奥氏304不锈钢.也不借鉴友商的“手感真TM的爽”,重回“跑分”之路推广了红米note2之后,这次为了小米4C的推广,来了个“高铁模式”. 可是这句话最先引来的是认证为通信专业教师.科学松鼠会会员的@奥卡姆剃刀 打脸,这位通信专业人士认为“多普勒效应与快速过区切换是高铁两大问题,通常依靠扩大重叠区和基站协同技术来解决,华为在算法上有深入研究.总之要靠上端的基站来解决,而不是下端的手机,手机单方面改动若无基站的相应配合,恐怕没有作用.” 当然所谓的“高铁模式”,华为在

【华为云技术分享】技术探秘:华为云瑶光何以定方向

作为北斗第七星,瑶光自古就可用来判断四季更迭.引向定时.而作为全新发布的智能云操作系统,瑶光智慧云脑又是如何做到统领云上各类资源.实现租户需求与资源供应之间最佳匹配的呢?在华为云瑶光实验室.华为云算法创新实验室里,我们找到了答案. #初识资源调度# 云OS:我太“南”了 依托虚拟化技术,我们得以将数据中心海量的计算.存储资源以云服务的形式对外提供.而随着数据中心规模扩展.边缘计算带来的算力延伸,承担着高效.精准资源调度的云操作系统面临着三大挑战: 第一个挑战是云计算的资源消耗/售卖模式带来的.云

华为初级——合唱队

提示:这是属于动态规划问题.动态规划算法通常用于求解具有某种最优性质的问题.在这类问题中,可能会有许多可行解.每一个解都对应于一个值,我们希望找到具有最优值的解. 其实这道题目有一些问题:不能交换位置,这个关键的信息在题目中间没有进行说明. 编程思路是:需要三个数组,第一个数组存放原数据.第二个数组用于存放人数:从左向右遍历时,对于当前的数据(身高),寻找符合条件的人数,要求是从小到大排列的最大数.第三个数组用于存放人数:从右向左遍历,对于当前的数据,寻找符合条件的人数,要求从大到小排列的最大数

[华为机试练习题]44.24点游戏算法

题目 注意: 6 + 2 * 4 + 10 = 24 不是一个数字一个数字的计算 代码 /*--------------------------------------- * 日期:2015-07-03 * 作者:SJF0115 * 题目:24点游戏算法 * 来源:华为机试练习题 -----------------------------------------*/ #include <iostream> #include <string> #include <vector&

背包算法解决一道华为面试题

闲来无事,看到了一篇文章,华为面试题,题目如下: 有两个数组a,b,大小都为n,数组元素的值任意,无序: 要求:通过交换a,b中的元素,使数组a元素的和与数组b元素的和之间的差最小 网址是http://bbs.chinaunix.net/thread-855126-1-1.html这个. 估计多数人想到的都是先sort,再交叉,或者一条龙什么的,包括我.后来一想不对啊,如果前面的都是个位数,最后一个是999怎么办? 抱着学习的态度一页一页往下翻,好多人都是在提出来自己想法,但是我拿我这个999验

&lt;路径算法&gt;哈密顿路径变种问题(2016华为软件精英挑战赛初赛)

原创博客,转载请联系博主! 前言:几天前华为的这个软件精英(算法外包)挑战赛初赛刚刚落幕,其实这次是我第二次参加,只不过去年只入围到了64强(32强是复赛线),最后搞到了一个华为的一顶帽子(感谢交大某妹纸快递寄过来!),今年小较了一把真,幸运地闯进了排行榜.(第17位的就是我们Team噢!耶鲁顾神很给力!)    所以呢,回到正题首先来看一下初赛赛题吧! 初赛赛题要求 已知有向图G的拓扑(结点V,边E)和V的一个子图V’,在G内求一条从start结点到end结点的路径,要求经过V’的所有结点并且

华为0基础——合唱队

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveG1oMTk1NA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" > 提示:这是属于动态规划问题.动态规划算法通经常使用于求解具有某种最优性质的问题.在这类问题中.可能会有很多可行解.每个解都相应于一个值.我们希望找到具有最优值的解. 事实上这道题目有一些问题:不能交换位置,这个关键的信息在