题目:
给你一个整数数组 arr 和一个整数 k 。现需要从数组中恰好移除 k 个元素,请找出移除后数组中不同整数的最少数目。
示例 1:
输入:arr = [5,5,4], k = 1
输出:1
解释:移除 1 个 4 ,数组中只剩下 5 一种整数。
示例 2:
输入:arr = [4,3,1,1,3,3,2], k = 3
输出:2
解释:先移除 4、2 ,然后再移除两个 1 中的任意 1 个或者三个 3 中的任意 1 个,最后剩下 1 和 3 两种整数。
提示:
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
"""
arrdict={}
for i in arr:
if i in arrdict:
arrdict[i]+=1
else:
arrdict[i]=1
arrdict=sorted(arrdict.items(),key=lambda kv:kv[1])
length=len(arrdict)
count = 0
for f, v in arrdict:
count += 1
k -= v
if k < 0:
return length - count + 1
return 0
想法:
按照出现次数形成排序字典,用k一个一个减去它,用来判断剩下的不同整数的最少数目;