360笔试第一题贪心思路

思路:让权重和最大,就是要在原数组的权重和的基础上,尽可能的把值比较大的重复的数切分到不同的段中。

代码:

   Scanner in = new Scanner(System.in);
   int n = in.nextInt();
   int k = in.nextInt();
   int[] arr = new int[n];
    HashMap<Integer,Integer> map = new HashMap<>();
    int sum = 0;
    for (int i = 0; i < n; i++) {
        arr[i] = in.nextInt();
    }
    Arrays.sort(arr);
    for (int num : arr) {
        if (!map.containsKey(num)){
            sum += num;
        }
        map.put(num,map.getOrDefault(num,0) + 1);
    }
    int i = n - 1;
    while(k > 0){
        if (map.get(arr[i]) > 1){
            sum += arr[i];
            map.put(arr[i],map.get(arr[i]) - 1);
            k--;
        } else {
            i--;
        }
    }
    System.out.println(sum);

贪心可以AC

全部评论
昨天的题目一模一样。你这咋还排序,能排序?
点赞 回复 分享
发布于 10-26 18:01 广东
赞赞
点赞 回复 分享
发布于 09-21 13:30 辽宁

相关推荐

11-18 21:04
已编辑
华中科技大学 前端工程师
一共四面,进度挺快,希望能开高一点timeline:10.20&nbsp;一面&nbsp;50min10.22&nbsp;二面&nbsp;40min10.28&nbsp;hr面&nbsp;50min&nbsp;&nbsp;秒过约10.30主管面但是因为种种原因一直改时间到11月11.11&nbsp;主管面&nbsp;&nbsp;50min一面:简历拷打20min,主要是实习业务和微前端框架,然后是八股:react&nbsp;hooks,有哪些,怎么用,useEffect和useEvent区别,useMemo和react.memo区别,为什么不能在条件里用浏览器css和js和dom的解析具体过程,谁先谁后表格缓存怎么做,首屏加载怎么监控的,虚拟表格实现原理,怎么做表格选型的平时怎么使用ai,有哪些心得怎么看待ai手撕忘了,应该不是特别难的不然我会记得p.s&nbsp;&nbsp;面试官好有礼貌,唯一一个称呼为您的,答错了会有正确解答,最后问我还有什么简历没问的我还以为是我没啥能问的二面:1.受到ddos攻击后有哪些应对方案2.前端安全用过哪些3.webpack配置过什么,有用过什么插件4.树摇原理5.react和vue区别6.为什么要微前端改造7.微前端隔离的原理,快照和proxy的优缺点8.服务器部署原理,回滚原理这个的手撕也忘了,没印象就是不太难三面hr面:hr挺好的,没有压力1.个人经历询问2.为什么跑路了实习3.觉得最有成就感的事情4.有没有主导过项目5.三个词语形容自己&nbsp;&nbsp;为什么这么说6.现在最想提升的方面7.为什么选AI初创不选大厂8.对AI的看法四面主管面:拖了好久才来面,还以为不想要我了一眼看出来是字节出来的,之前的同事都是这种高效礼貌疏离的1.讲讲你实习的优化的具体2.有没有什么沟通协作的经历3.形容自己有领导力的原因4.除了想要提升技术还有什么软素质想要提升5.其他offer&nbsp;意向城市6.反问业务,是根据base地和个人倾向决定
查看27道真题和解析
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

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