[leetcode] 1481. Least Number of Unique Integers after K Removals

Description

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

分析

题目的意思是:给你一个数组,删除K个数了之后,要求剩下的数的种类最少。读懂了之后发现是要先删除频率低的数,如果能发现这个就很直接,直接统计数的频率,然后。我这里用了defaultdict+排序。我看了一下用counter好像更好,直接就是排序好的了。

代码

class Solution:
    def findLeastNumOfUniqueInts(self, arr: List[int], k: int) -> int:
        a=collections.defaultdict(int)
        for num in arr:
            a[num]+=1
        b=sorted(a.items(),key=lambda x:x[1])
        res=0
        for i in range(len(b)):
            key,v=b[i]
            if(k>v):
                k-=v
            elif(k==v):
                res=len(b)-i-1
                break
            else:
                res=len(b)-i
                break
        return res

参考文献

[LeetCode] Simple Python Solution | Using Counter

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

农民小飞侠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值