[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
- 215. Kth Largest Element in an Array
- 尋找陣列中第K大的元素陣列
- 查詢陣列中第K大的元素陣列
- LeetCode-215-陣列中的第K個最大元素LeetCode陣列
- LeetCode C++ 703. Kth Largest Element in a Stream【Heap/Design】簡單LeetCodeC++
- 找出陣列中第 k 大的數字及其出現次數陣列
- 獲取一個陣列裡面第K大的元素陣列
- 陣列中的第K個最大元素陣列
- 【leetcode】27. Remove Element 刪除陣列指定值的元素LeetCodeREM陣列
- 215. 陣列中的第K個最大元素陣列
- 【LEETCODE】模擬面試-215. Kth Largest EleLeetCode面試
- Array · 刪除陣列中指定的元素陣列
- 無序陣列求第K大的數陣列
- [LeetCode] 230. Kth Smallest Element in a BSTLeetCode
- JavaScript刪除array陣列元素JavaScript陣列
- 力扣-215. 陣列中的第K個最大元素力扣陣列
- 【leetcode】26. Remove Duplicates from Sorted Array 刪除有序陣列的重複元素LeetCodeREM陣列
- 找出陣列中元素出現次數超過陣列長度一半的元素陣列
- LeetCode Shuffle an Array(打亂陣列)LeetCode陣列
- [LeetCode] 378. Kth Smallest Element in a Sorted MatrixLeetCode
- js找出陣列中出現最多的元素和次數JS陣列
- TopK問題,陣列中第K大(小)個元素問題總結TopK陣列
- nth_element 找第k大的數
- LeetCode題解(1535):找出陣列遊戲的贏家(Python)LeetCode陣列遊戲Python
- 1.找出元素 item 在給定陣列 arr 中的位置陣列
- 獲取陣列第N個元素的方法陣列
- 215、陣列中的第K個最大元素 | 演算法(leetcode,附思維導圖 + 全部解法)300題陣列演算法LeetCode
- Array · 判斷某元素是否在陣列中陣列
- 【LeetCode】852.山脈陣列的峰頂元素LeetCode陣列
- jQuery遍歷array陣列元素程式碼例項jQuery陣列
- Array陣列陣列
- leetcode-陣列中兩元素的最大乘積(Java)LeetCode陣列Java
- js練習(一)找出元素item在給定陣列arr中的位置JS陣列
- 【LeetCode-陣列】查詢大多數元素LeetCode陣列
- JavaScript Array 陣列JavaScript陣列
- 【陣列】1394. 找出陣列中的幸運數(簡單)陣列
- 陣列元素的數量陣列