zoukankan      html  css  js  c++  java
  • 【leetcode】1481. Least Number of Unique Integers after K Removals

    题目如下:

    Given an array of integers arr and an integer k. Find the least number of unique integers after removing exactly k elements.

    Example 1:

    Input: arr = [5,5,4], k = 1
    Output: 1
    Explanation: Remove the single 4, only 5 is left.
    

    Example 2:

    Input: arr = [4,3,1,1,3,3,2], k = 3
    Output: 2
    Explanation: Remove 4, 2 and either one of the two 1s or three 3s. 1 and 3 will be left. 

    Constraints:

    • 1 <= arr.length <= 10^5
    • 1 <= arr[i] <= 10^9
    • 0 <= k <= arr.length

    解题思路:贪心算法, 从出现次数最少的元素删起,然后是次最少。

    代码如下:

    class Solution(object):
        def findLeastNumOfUniqueInts(self, arr, k):
            """
            :type arr: List[int]
            :type k: int
            :rtype: int
            """
            dic = {}
            for i in arr:
                dic[i] = dic.setdefault(i,0) + 1
            pair = []
            for key,val in dic.iteritems():
                pair.append((key,val))
    
            def cmpf(item1,item2):
                return item1[1] - item2[1]
    
            pair.sort(cmp=cmpf)
    
            while len(pair) > 0 and k > 0:
                key,val = pair.pop(0)
                if k >= val:
                    k -= val
                else:
                    pair.append((key,val))
                    break
    
            return len(pair)
  • 相关阅读:
    CF1580B Mathematics Curriculum
    [机房测试]变异大老鼠
    http_缓存
    UDP_概述
    记录: webAssembly 延申
    Event
    NetWork_timeLine
    基于Typora的Latex代码书写并移植到word中
    ZooKeeper学习总结
    HBase学习总结
  • 原文地址:https://www.cnblogs.com/seyjs/p/13176633.html
Copyright © 2011-2022 走看看