使用Python编写程序,找出删除K个元素后最少的唯一整数数量
假设我们有一个名为nums的数组,其中仅存储整数。如果有一个数字k,我们必须找到删除k个元素后最少的唯一元素数量。
因此,如果输入是nums = [5,4,2,2,4,4,3],k = 3,那么输出将为2,因为如果我们删除5和3,只剩下2和4,任意一个2或者4。
要解决这个问题,我们将按照以下步骤进行−
- dictionary:=新地图
-
对于nums中的每个num,执行以下操作
- 如果num不在dictionary中,则执行以下操作
- dictionary[num]:=1
- 否则,执行以下操作
- dictionary[num]:=dictionary[num]+1
- 如果num不在dictionary中,则执行以下操作
- count:=dictionary中的值的总数
-
对于dictionary的所有value的排序顺序中的每个频率,执行以下操作
- k:=k-frequency
-
如果k<0,则执行以下操作
- 返回count
- 否则,执行以下操作
- count:=count-1
- 返回count
请看以下实现以更好地理解−
示例
def solve(nums, k):
dictionary={}
for num in nums:
if num not in dictionary:
dictionary[num]=1
else:
dictionary[num]+=1
count=len(dictionary)
for frequency in sorted(dictionary.values()):
k-=frequency
if(k<0):
return count
else:
count-=1
return count
nums = [5,4,2,2,4,4,3]
k = 3
print(solve(nums, k))
输入
[5,4,2,2,4,4,3], 3
输出
2