题解 | #最小的K个数#

最小的K个数

https://www.nowcoder.com/practice/6a296eb82cf844ca8539b57c23e6e9bf

题目说了数据在[0,1000],那么直接开辟一个长度为1001的数组,来统计每个数的个数,用空间换时间,时间复杂度为O(n)。

class Solution:
    def GetLeastNumbers_Solution(self , input: List[int], k: int) -> List[int]:
        if k>len(input):
            return []
        rec=[0 for _ in range(1001)]
        for i in input:
            rec[i]+=1
        ans=[]
        for i in range(1001):
            if rec[i]!=0:
                if rec[i]+len(ans)<=k:
                    ans+=[i]*rec[i]
                else:
                    ans+=[i]*(k-len(ans))
            if len(ans)==k:
                return ans

全部评论

相关推荐

05-09 14:45
门头沟学院 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务