猿辅导笔试编程第二题

题目大意:多个角色,每三个角色可组成一组,最多可以组成多少组。

思路:每次选取最大的三个数减1,直到第三大的数为零。

代码我没有测试过,别人笔试时让我帮忙看下,我就自己实现了下,不知道效果如何。
import java.util.*;

public abstract class Main {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        int c=sc.nextInt();
        int result[]=new int[c];
        for (int i = 0; i <c; i  ) {
            int T=sc.nextInt();
            int[]  temp=new int[T];
            for (int j = 0; j <T ; j  ) {
                temp[j]=sc.nextInt();
            }
            result[i]=getMax1(temp);
        }
        for (int i = 0; i <c ; i  ) {
            System.out.println(result[i]);
        }


    }
    //之前有些回复指出此种方***超时,所以利用优先队列实现了下,不知道效果如何
    /*public static int getMax(int[] array){
        int len=array.length;
        if(len<3){
            return 0;
        }
        Arrays.sort(array);
        int count=0;
        while(array[len-3]!=0){
            count  ;
            array[len-3]--;
            array[len-2]--;
            array[len-1]--;
            Arrays.sort(array);
        }
        return count;
    }*/
    public static int getMax1(int[] array){
        PriorityQueue<Integer> priorityQueue=new PriorityQueue(new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                return o2-o1;
            }
        });
        int len=array.length;
        if(len<3){
            return 0;
        }
        for (int i = 0; i <array.length ; i  ) {
            priorityQueue.add(array[i]);
        }
        boolean flag=true;
        int count=0;
        while (flag){
            int a=priorityQueue.poll();
            int b=priorityQueue.poll();
            int c=priorityQueue.poll();
            if(c>=1){
                count  ;
                priorityQueue.add(a-1);
                priorityQueue.add(b-1);
                priorityQueue.add(c-1);
            }else{
                flag=false;
            }


        };
        return count;

    }
}


#猿辅导##笔试题目#
全部评论
这是角色分组?
点赞 回复 分享
发布于 2019-08-24 23:42

相关推荐

今天提了离职,领导说让我离职前请几位正式工吃饭……我本来是有请客的打算的,因为感觉这几个同事人还挺好,想以后维持一下关系。但我第一次听领导主动说让实习生请客的……(只因为一个请客,倒不至于发个帖子。主要是这个公司的离谱事情太多了,跟之前的实习感受完全不同)之前几段实习,在实习结束前,mentor或领导会请客欢送,无论是私下吃个便饭也好,还是全部门的奶茶也好。这几位正式工既不是我的mentor,也不是我的领导。而且我异地实习生活很拮据,这家公司给得很少。当然了,这也算意料之外,情理之中。这家公司一直对实习生很不友好。经常让实习生加班,总是跟实习生说“辛苦一下”。你也没给我那个辛苦钱啊!晚上干到12点,周末加班干,要么是领导要看,要么是客户着急。之前的公司,我主动加班,mentor都会跟我说,实习生不用加班,到点下班就行。加班就算了,我安慰自己就当学东西了,锻炼抗压能力。但辛苦完了,节日的福利,竟然只有正式员工才有?!我之前实习,实习生的节日福利一点也不比正式工少啊……有的正式工还会把福利分给实习生一部分。挺心寒的……而且,我觉得这家公司对实习生很不负责,纯拿你当廉价劳动力。可以让刚毕业才工作三个月的人带实习生,实习生不会的,正式员工也不会,俩人就一起探索。还真就那个“和公司共同成长”😅避雷某GJ级专精特新小巨人企业,六百多人,整体氛围挺离谱的,跟我去过的其他公司完全不一样。领导都是些老东西,喜欢PUA,爹味十足。流程混乱、管理混乱、代码混乱、职责混乱,技术领导不懂技术,总说出一些可笑的畅想。虽然技术不咋地,但是把产品技术路线吹上天的本事倒是有,而且很大!什么xx系统、xx模型、xx工具,名字一个比一个高大上,其实可能就是调用Qwen、DeepSeek、Doubao……还声称这两年要上市,我祝你们成功吧😄
不知道怎么取名字_:实习的能有多少钱,为啥要请客
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务