LeetCode 215. 数组中的第K个最大元素(快速排序)
生活随笔
收集整理的這篇文章主要介紹了
LeetCode 215. 数组中的第K个最大元素(快速排序)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1. 題目
在未排序的數組中找到第 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 ≤ 數組的長度。來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/kth-largest-element-in-an-array
著作權歸領扣網絡所有。商業轉載請聯系官方授權,非商業轉載請注明出處。
2. 快排解題
- 參考:尋找數組內第K大的元素
- 類似題目:LeetCode 973. 最接近原點的 K 個點(排序/優先隊列/快排)
56 ms 9.9 MB
python3 解答
class Solution:# py3def findKthLargest(self, nums: List[int], k: int) -> int:def findk(l, r, k):p = nums[l];i = lj = rwhile i < j:while i < j and nums[j] > p:j -= 1while i < j and nums[i] <= p:i += 1t = nums[i]nums[i] = nums[j]nums[j] = tt = nums[i]nums[i] = nums[l]nums[l] = tif i == k:return nums[i]elif i < k:return findk(i+1, r, k)else:return findk(l, i-1, k)return findk(0,len(nums)-1, len(nums)-k)1032 ms 19.7 MB
總結
以上是生活随笔為你收集整理的LeetCode 215. 数组中的第K个最大元素(快速排序)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode 1252. 奇数值单元
- 下一篇: LeetCode 984. 不含 AAA