题目:给你一个整数数组 arr 和一个整数 k 。现需要从数组中恰好移除 k 个元素,请找出移除后数组中不同整数的最少数目。
解题参考:
输入:arr = [5,5,4], k = 1
输出:1
解释:移除 1 个 4 ,数组中只剩下 5 一种整数。
自己思路:
1、从输入数组arr中选择长度为n-k的组合,n为arr的长度
2、求选择的所有组合的无重复数据的个数m
3、求m的最小值即为最终所求结果
示例代码
class Solution:
def findLeastNumOfUniqueInts(self, arr: List[int], k: int) -> int:
cnt = Counter(arr)
n = len(cnt)
vlist = []
for v in cnt.values():
vlist.append(v)
vlist.sort()
for i, v in enumerate(vlist):
k -= v
if k == 0:
return n - i - 1
elif k < 0:
return n - i
思路分析:
1、找到arr中无重复数据及个数n
2、将个数n从小到大进行排序-v
3、依次比较k和v[0],v[0]+v[1]…