1481. 不同整数的最少数目(python)

给定一个整数数组arr和整数k,需要移除k个元素以使得数组中不同整数的数目最小。首先使用字典记录数组中每个整数出现的次数,然后对次数进行排序。依次从高频元素开始移除,直到k等于0,返回此时的不重复整数数目。如果k小于0,则返回移除后的不重复元素个数。
摘要由CSDN通过智能技术生成

给你一个整数数组 arr 和一个整数 k 。现需要从数组中恰好移除 k 个元素,请找出移除后数组中不同整数的最少数目

class Solution(object):
    def findLeastNumOfUniqueInts(self, arr, k):
        """
        :type arr: List[int]
        :type k: int
        :rtype: int
        """
        counts={}#设置一个字典
        for num in arr:
            if num not in counts:
                counts[num]=1#如果定义字典里没有存在该整数则记录
            else:
                counts[num]+=1#如果含有该整数则+1
        ls=[]#定义一个元组用于存放counts的值,也就是元素对应的数目
        for value in counts.values():
            ls.append(value)#将value的值存放在ls元组中
        ls.sort()#进行排序
        for l in range(len(ls)):
            k-=ls[l]
            if k==0:    
                return len(ls[l+1:])
            if k<0:
                return len(ls[l:])

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值