筆者以c++
方式解決。
#include
"iostream"
using namespace std;
#include
"algorithm"
#include
"vector"
#include
"queue"
#include
"set"
#include
"map"
#include
"string"
#include
"stack"
#include
class solution
// 初始化 k_all
k_all = k;
// 將每個元素依次加入到最小堆中
for(
int i =
0; i < nums.
size()
;++i)
// 返回最小堆堆頂元素
return q.
top();
}/**
* 新增元素到最小堆,堆的大小最大為 k_all
* @param data
*/void
add(
int data)
// 否則取出堆頂元素
auto data_top = q.
top();
// 如果堆頂元素比新插入的值大,則新值直接丟棄
if(data_top >= data)
// 否則彈出堆頂元素
q.pop();
// 插入新值
q.push
(data);}
};intmain()
; solution *psolution = new solution;
int i = psolution->
findkthlargest
(nums,2)
; cout << i << endl;
system
("pause");
return0;
}
執行結果
有點菜,有時間再優化一下。
難得有時間刷一波leetcode
, 這次做乙個系統的記錄,等以後複習的時候可以有章可循,同時也期待各位讀者給出的建議。演算法真的是乙個照妖鏡,原來感覺自己也還行吧,但是演算法分分鐘教你做人。前人栽樹,後人乘涼。在學習演算法的過程中,看了前輩的成果,受益匪淺。
感謝各位前輩的辛勤付出,讓我們少走了很多的彎路!
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...