Leetcode 215 陣列中的第K個最大元素

2021-10-22 01:55:14 字數 1043 閱讀 1167

各種排序見:

思想:呼叫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...