zoukankan      html  css  js  c++  java
  • 1338. Reduce Array Size to The Half

    Given an array arr.  You can choose a set of integers and remove all the occurrences of these integers in the array.

    Return the minimum size of the set so that at least half of the integers of the array are removed.

    Example 1:

    Input: arr = [3,3,3,3,5,5,5,2,2,7]
    Output: 2
    Explanation: Choosing {3,7} will make the new array [5,5,5,2,2] which has size 5 (i.e equal to half of the size of the old array).
    Possible sets of size 2 are {3,5},{3,2},{5,2}.
    Choosing set {2,7} is not possible as it will make the new array [3,3,3,3,5,5,5] which has size greater than half of the size of the old array.
    

    Example 2:

    Input: arr = [7,7,7,7,7,7]
    Output: 1
    Explanation: The only possible set you can choose is {7}. This will make the new array empty.
    

    Example 3:

    Input: arr = [1,9]
    Output: 1
    

    Example 4:

    Input: arr = [1000,1000,3,7]
    Output: 1
    

    Example 5:

    Input: arr = [1,2,3,4,5,6,7,8,9,10]
    Output: 5
    

    Constraints:

    • 1 <= arr.length <= 10^5
    • arr.length is even.
    • 1 <= arr[i] <= 10^5
    class Solution {
        public int minSetSize(int[] arr) {
            Map<Integer, Integer> map = new HashMap();
            for(int i : arr) map.put(i, map.getOrDefault(i, 0) + 1);
            List<Integer>[] bucket = new ArrayList[arr.length + 1];
            for(int i = 0; i <= arr.length; i++) bucket[i] = new ArrayList();
            for(int k : map.keySet()) {
                int f = map.get(k);
                bucket[f].add(k);
            }
            int n = arr.length;
            int res = 0, tmp = 0;
            for(int i = n; i >= 1; i--) {
                int cursize = bucket[i].size();
                if(cursize == 0) continue;
                while(cursize > 0) {
                    tmp += i;
                    res++;
                    if(tmp >= n / 2) return res;
                    cursize--;
                }
                
            }
            return res;
        }
    }

    数组频率有关的就hashmap + bucket sort

  • 相关阅读:
    spring相关资源
    spring mvc获取request HttpServletRequest
    spring中文乱码问题
    haskell读写文件相关(含二进制)
    grade web的构建约定 convention
    李洪强iOS开发之-实现点击单行View显示和隐藏Cell
    Animated progress view with CAGradientLayer(带翻译)
    关于CAShapeLayer
    CAShapeLayer的使用
    用缓动函数模拟物理动画
  • 原文地址:https://www.cnblogs.com/wentiliangkaihua/p/14979693.html
Copyright © 2011-2022 走看看