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