![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
快速选择
liubeiandcaocao
这个作者很懒,什么都没留下…
展开
-
215 数组中的第k个最大元素,重新学习记录快速选择
class Solution: def findKthLargest(self, nums: List[int], k: int) -> int: def _partion(nums,left,right): rand_index = random.randint(left,right)#随机化切分元素 # randint 是包括左右区间的 nums[left],nums[rand_index] = num原创 2020-08-26 12:14:49 · 114 阅读 · 0 评论 -
剑指offer45 把数组排成最小的数
输入一个非负整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个; 数字大小和字典序的大小都不行,必须满足22交换后str(a)+str(b)<str(b)+str(a) class Solution: def minNumber(self, nums: List[int]) -> str: 方法一 经典快速排序的实现,实现 str(a)+str(b)<str(b)+str(a) nums = list(map(str,nums))#ma原创 2020-07-30 22:10:17 · 69 阅读 · 0 评论 -
剑指offer40最小的k个数 使用快速选择来写,经典;用215题数组中的第k个最大元素的方法再写一遍快速选择
class Solution: def getLeastNumbers(self, arr: List[int], k: int) -> List[int]: if k==0: return [] def partition(s,e): if s>=e: #递归出口,此时不需要额外划分 return pivot = arr[s] #定义基线点原创 2020-07-26 16:50:54 · 117 阅读 · 0 评论 -
荷兰国旗问题,快速选择,partition,three way partition 快速选择的题,好题就多看几遍
1.荷兰国旗问题 【0,0,1,1,2,2,2】 class Solution: def sortColors(self, nums: List[int]) -> None: ''' 荷兰三色旗问题解 ''' # 对于所有 idx < p0 : nums[idx < p0] = 0 # curr是当前考虑元素的下标 p0 = curr = 0 # 对于所有 idx &g原创 2020-06-15 23:05:29 · 164 阅读 · 0 评论