[LeetCode] Kth Largest Element in an Array (找出陣列的第k大的元素)
Find the kth largest element in an unsorted array. Note that it is the kth largest element in the sorted order, not the kth distinct element.
For example,
Given [3,2,1,5,6,4]
and k = 2, return 5.
Note:
You may assume k is always valid, 1 ≤ k ≤ array's length.
方法一:
一看這題,可能第一個想到的就是使用排序演算法,但是如果使用排序演算法,再找出nums[nums.size()-k]的元素,那麼複雜度將會是O(NlogN),如果在資料比較小的情況下可能是能過,但這題很顯然不會讓你兩行程式碼(sort,return nums[nums.size()-k])結束該題,所以肯定會超時的
方法二:
使用二分法,可以使複雜度降低到O(N),類似於快排,但我們並不需要進行排序。首先取序列中的首元素p,把該序列中比p小的元素放在左邊,比p大的元素放在右邊.然後根據更新後p在序列中的位置,可以推出第k大的元素在左邊還是右邊。若在左邊,則進行同樣的操作,在右邊也進行同樣的操作。直到p的位置剛剛好在第k大的位置,此時就可返回p,即為答案。
複雜度分析:
每次操作都要進行n次比較,這裡的n的序列長度。假設每次取到的元素恰好在中間位置,則每次序列長度減半。所以總共最多需要比較n+n/2+n/4+.....1=n(1+1/2+1/4+....(1/2)^k)≤2n,所以複雜度為O(N)
class Solution {
public:
int findKthLargest(vector& nums, int k) {
int begin=0,end=nums.size()-1;
while(begin<=end)
{
int pivot=nums[begin],pt=begin,p1=begin;
for(int i=begin+1;i<=end;++i)
if(nums[i]
相關文章
- LeetCode Kth Largest Element in an ArrayLeetCode
- python leetcode 215. Kth Largest Element in an ArrayPythonLeetCode
- 尋找陣列中第K大的元素陣列
- 查詢陣列中第K大的元素陣列
- LintCode-Kth Largest Element
- 找出陣列中第 k 大的數字及其出現次數陣列
- 獲取一個陣列裡面第K大的元素陣列
- 找出陣列中元素的位置陣列
- 陣列中的第K個最大元素陣列
- [CareerCup] 2.2 Kth to Last Element of Linked List 連結串列的倒數第k個元素AST
- LeetCode-215-陣列中的第K個最大元素LeetCode陣列
- LeetCode C++ 703. Kth Largest Element in a Stream【Heap/Design】簡單LeetCodeC++
- 無序陣列求第K大的數陣列
- Array · 刪除陣列中指定的元素陣列
- 【leetcode】27. Remove Element 刪除陣列指定值的元素LeetCodeREM陣列
- 215. 陣列中的第K個最大元素陣列
- JavaScript刪除array陣列元素JavaScript陣列
- Leetcode Kth Smallest Element in a BSTLeetCode
- 在陣列中找出唯一的重複元素陣列
- TopK問題,陣列中第K大(小)個元素問題總結TopK陣列
- iOS 判斷陣列array中是否包含指定的元素,取出該元素在array中的下標+陣列方法詳解...iOS陣列
- 找出陣列中元素出現次數超過陣列長度一半的元素陣列
- 力扣-215. 陣列中的第K個最大元素力扣陣列
- js找出陣列中出現最多的元素和次數JS陣列
- 【LEETCODE】模擬面試-215. Kth Largest EleLeetCode面試
- LeetCode-Kth Smallest Element in a Sorted MatrixLeetCode
- 【leetcode】26. Remove Duplicates from Sorted Array 刪除有序陣列的重複元素LeetCodeREM陣列
- LeetCode Shuffle an Array(打亂陣列)LeetCode陣列
- 獲取陣列第N個元素的方法陣列
- 1.找出元素 item 在給定陣列 arr 中的位置陣列
- Array · 判斷某元素是否在陣列中陣列
- javascript delete運算子刪除array陣列元素JavaScriptdelete陣列
- Array陣列陣列
- Split Array Largest Sum
- [LeetCode] 378. Kth Smallest Element in a Sorted MatrixLeetCode
- [LeetCode] 230. Kth Smallest Element in a BSTLeetCode
- jQuery遍歷array陣列元素程式碼例項jQuery陣列
- 【LeetCode 88_陣列】Merge Sorted ArrayLeetCode陣列