• LeetCode 215.数组中的第K个最大元素


    在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。
    
    示例 1:
    输入: [3,2,1,5,6,4] 和 k = 2
    输出: 5
    
    示例 2:
    输入: [3,2,3,1,2,4,5,5,6] 和 k = 4
    输出: 4
    说明:
    你可以假设 k 总是有效的,且 1 ≤ k ≤ 数组的长度。
    
    class Solution:
        def findKthLargest(self, nums: List[int], k: int) -> int:
            def partition2(nums, left, right):
                random_index = random.randint(left, right)
                nums[left], nums[random_index] = nums[random_index], nums[left]
                pivot = nums[left]
                i = left
                j = right
                while i< j:
                    if nums[i]>pivot:
                        i+=1
                    elif nums[j]<pivot:
                        j-=1
                    else:
                        if nums[i] == nums[j]:
                            i+=1
                        else:
                            nums[i], nums[j] = nums[j], nums[i]
                return i
            def partition(nums, left, right):
                random_index = random.randint(left,right)
                nums[left], nums[random_index] = nums[random_index], nums[left]
                pivot = nums[left]  # 基准点
                i = left  
                for j in range(left+1, right+1):
                    if nums[j] > pivot: # 把大于基准点的元素, 交换到左边
                        i+=1
                        nums[i], nums[j] = nums[j], nums[i]
                nums[left], nums[i] = nums[i], nums[left]
                return i
    
            left = 0 
            right = len(nums) - 1
            while True:
                index = partition(nums, left, right)
                if index == k - 1:
                    return nums[k - 1]
                elif index > k - 1:
                    right = index - 1
                else:
                    left = index + 1  
    
    
  • 相关阅读:
    vue.js 第二课
    vue.js学习(第一课)
    2016-11-14看张大神的微博总结
    这几天的工作总结:
    调了一天的兼容总结下
    鸭式辩论
    prototype 原型
    前端ps常用的小技巧
    Android的开始之相对布局
    Android的开始之线性布局
  • 原文地址:https://www.cnblogs.com/sandy-t/p/13416591.html
Copyright © 2020-2023  润新知