题目
代码
执行用时:
56 ms, 在所有 Python3 提交中击败了73.20%的用户
内存消耗:
15.8 MB, 在所有 Python3 提交中击败了95.39%的用户
通过测试用例:
38 / 38
class Solution:
def getLeastNumbers(self, arr: List[int], k: int) -> List[int]:
arr.sort()
return arr[:k]
【方法2】
执行用时:
64 ms, 在所有 Python3 提交中击败了61.82%的用户
内存消耗:
内存消耗:
15.9 MB, 在所有 Python3 提交中击败了85.22%的用户
通过测试用例:
38 / 38
class Solution:
def getLeastNumbers(self, arr: List[int], k: int) -> List[int]:
heapify(arr)
ans=[]
while k:
k-=1
ans.append(heappop(arr))
return ans
【方法3】快速排序原始版本
执行用时:
272 ms, 在所有 Python3 提交中击败了12.45%的用户
内存消耗:
19.1 MB, 在所有 Python3 提交中击败了8.83%的用户
通过测试用例:
38 / 38
class Solution:
def getLeastNumbers(self, arr: List[int], k: int) -> List[int]:
def quick_sort(l,r):
if l>r:return
i,j=l,r
while i<j:
while i<j and arr[j]>arr[l]:j-=1
while i<j and arr[i]<=arr[l]:i+=1
arr[i],arr[j]=arr[j],arr[i]
arr[i],arr[l]=arr[l],arr[i]
quick_sort(l,i-1)
quick_sort(i+1,r)
quick_sort(0,len(arr)-1)
return arr[:k]
【方法4】
执行用时:
112 ms, 在所有 Python3 提交中击败了37.88%的用户
内存消耗:
19 MB, 在所有 Python3 提交中击败了10.88%的用户
通过测试用例:
38 / 38
class Solution:
def getLeastNumbers(self, arr: List[int], k: int) -> List[int]:
def quick_sort(l,r):
if l>=r:return
i,j=l,r
while i<j:
while i<j and arr[j]>=arr[l]:j-=1
while i<j and arr[i]<=arr[l]:i+=1
arr[i],arr[j]=arr[j],arr[i]
arr[i],arr[l]=arr[l],arr[i]
if i>k:quick_sort(l,i-1)
if i<k:quick_sort(i+1,r)
quick_sort(0,len(arr)-1)
return arr[:k]