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

全部评论
赞赞
点赞 回复 分享
发布于 09-21 13:30 辽宁

相关推荐

09-20 16:45
祝余杜若:1.45/2,第二题不会啊
投递360集团等公司10个岗位
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

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