假设我们有一个名为 nums 的数组,其中只存储整数。如果我们有一个数 k。我们必须在完全删除 k 个元素后找到最少数量的唯一元素。
因此,如果输入类似于 nums = [5,4,2,2,4,4,3], k = 3,那么输出将为 2,因为如果我们删除 5 和 3,以及 2s 中的任何一个或 4 中的任何一个,则只剩下 2 和 4。
为了解决这个问题,我们将按照以下步骤操作 -
字典:=一张新映射
对于 nums 中的每个 num,执行
字典[编号] := 字典[编号] + 1
字典[编号]:= 1
如果 num 不在字典中,则
否则,
计数:=字典的大小
对于字典所有值的排序顺序中的每个频率,请执行
计数 := 计数 - 1
返回计数
k := k - 频率
如果 k < 0,则
否则,
返回计数
让我们看看以下实现以获得更好的理解 -
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