欢迎光临散文网 会员登陆 & 注册

Leetcode Day14 3

2022-04-18 15:55 作者:我喜欢喝一点点  | 我要投稿

剑指 Offer 40. 最小的k个数

输入整数数组 arr ,找出其中最小的 k 个数。例如,输入4、5、1、6、2、7、3、8这8个数字,则最小的4个数字是1、2、3、4。


 


示例 1:


输入:arr = [3,2,1], k = 2

输出:[1,2] 或者 [2,1]

示例 2:


输入:arr = [0,1,2,1], k = 1

输出:[0]

 

这道好简单,随手做一下

class Solution:

    def getLeastNumbers(self, arr: List[int], k: int) -> List[int]:

        arr.sort()

        return arr[0:k]



我靠发现我做法太屑了,原来是要考快排,紧急速学快排

class Solution:
   def getLeastNumbers(self, arr: List[int], k: int) -> List[int]:
       def quickSort(arr,l,r):
           if l>=r:return
           i=l
           j=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[l],arr[i]=arr[i],arr[l]
           quickSort(arr,l,i-1)
           quickSort(arr,i+1,r)
       quickSort(arr,0,len(arr)-1)
       return arr[:k]

 

Leetcode Day14 3的评论 (共 条)

分享到微博请遵守国家法律