猿辅导笔试编程第二题

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

思路:每次选取最大的三个数减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

相关推荐

10-29 16:42
门头沟学院 Java
1.今天什么国标的公司打电话约面试,还得准备ppt,好麻烦,网上查薪资一般,打算拒了,不面了2.字节又复活了,什么安全开发,也不知道怎么样,面一面试试吧,还是挺想去字节的,但好难,随缘吧所以今天没面试
嵌入式的小白:面试前可以好好准备下 1.看看你投递的岗位的岗位描述,分析下是哪个业务线,同使要罗列他们描述中提到的技术点 2.根据1中的两点准备 3.岗位描述中应该还有语言要求,这个刷刷八股,要是对自己语言能力很有把握,那就不用看这点了 4.找下你简历中项目部分,看有没有和岗位描述中技术点重合的,这种在面试提到项目时,是高概率问题 好好准备,祝你面试顺利
我的求职进度条
点赞 评论 收藏
分享
牛客吹哨人:哨哥晚点统一更新到黑名单:能救一个是一个!26届毁意向毁约裁员黑名单https://www.nowcoder.com/discuss/1525833
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

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