码迷,mamicode.com
首页 > 其他好文 > 详细

5437.不同整数的最少数目

时间:2020-06-14 17:01:04      阅读:54      评论:0      收藏:0      [点我收藏+]

标签:after   put   find   arrays   tor   ast   整数   sort   turn   

技术图片
技术图片

哈希表

思路

  • 遍历数组arr,并用map记录各元素出现的次数
  • 根据map的key把对应的value提出 并保存在数组val中。(KeySet()获取map中所有的key)
  • 遍历排序后的数组val,同时与k比较,更新k的值

代码

//55ms
public static int findLeastNumOfUniqueInts(int[] arr, int k) {
    Map<Integer, Integer> map = new HashMap<>();
    for (int num : arr) {
        map.put(num, map.getOrDefault(num, 0) + 1);
    }
    if (k == 0) return map.size();
    int[] val = new int[map.size()];
    int i = 0;
    for (int key : map.keySet()) {//获取map的所有key  并遍历
        val[i++] = map.get(key);
    }
    Arrays.sort(val);
    int j;
    for (j = 0; j < val.length; j++) {
        if (k - val[j] >= 0) {
            k = k - val[j];
        } else break;
    }
    return val.length - j;//秒!!!
}

参考链接

李先达:java,hashMap

5437.不同整数的最少数目

标签:after   put   find   arrays   tor   ast   整数   sort   turn   

原文地址:https://www.cnblogs.com/yh-simon/p/13125082.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!