question:
解法:我最近用块排比较多,所以依旧采用快排的思想,先排序再返回K个数既可以了
class Solution:
def getLeastNumbers(self, arr: List[int], k: int) -> List[int]:
def reversarr(left,right):
# 判断特殊情况
if left >=right:
return
# 从新定义变量
i=left
j=right
# 将数组第一个值暂时存放起来
temp=arr[left]
while i<j:
# 从后往前遍历,查早比temp小的值
while i<j and temp<= arr[j]:
j -=1
# 然后进行交换
arr[i] =arr[j]
# 从前往后找比temp大的值
while i<j and temp>= arr[i]:
i +=1
arr[j]= arr[i]
# 最后把temp值放到数组的空位上
arr[i] =temp
# 以temp为中心,左右两边再一次进行排序
reversarr(left,i-1)
reversarr(i+1,right)
# 给函数传值
reversarr(0,len(arr)-1)
# 返回前K个数
return arr[:k]