各種排序見:
思想:呼叫sort排序,取第k個最大元素
思想:建立乙個大小為k的小頂堆,維持最大的k個元素,最後返回堆頂
**:
class
solution
for(
int i = k; i < nums.
size()
;++i)
}return q.
top();}};
思想:
呼叫partition將pivot左邊都放比它小的,右邊都放比它大的
注意: partition和快排的一樣,但是呼叫partition的方式不一樣
**:
class
solution
}// 結束後pivot左邊是比它小的,右邊是比它大的,返回的index就是第index + 1小的
intpartition
(vector<
int>
& nums,
int left,
int right)
nums[i]
= val;
// 返回樞紐元pivot
return i;}}
;
思想:
手撕大頂堆排序,可以優化一下引數
優化:i > 0優化到i >= n - k
for
(int i = n -
1; i >= n - k;
--i)
**:class
solution
return nums[n - k];}
void
percdown
(vector<
int>
& nums,
int i,
int n)}}
;
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...
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...
Leetcode215 陣列中的第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...