题解 | #最小的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