在未排序的陣列中找到第 k 個最大的元素。請注意,你需要找的是陣列排序後的第 k 個最大的元素,而不是第 k 個不同的元素。
本題核心在於排序,本題目前沒有發現排序外的解法,那核心就是如何降低排序的複雜度。
氣泡排序可以作為一種解法,但 o(n2) 的時間複雜度有點不太好,經同學嘗試可以通過。
我採用的是c++自帶的 sort 排序,sort本身是如何排序的我並不非常清楚,但是時間複雜度可以保持在 o(nlogn) 以內,相較來說肯定比上一種要好。
int
findkthlargest
(vector<
int>
& nums,
int k)
題解還提供了兩種較為優秀的方法,其一是採用堆排序,然後刪除 x 個節點來獲得結果,時間複雜度為 o(n + klogn),另一種方法是根據快速排序的特性,在第 k 個確定下標的節點即為結果;這兩種解法的描述較為複雜,請自行看該題題解(太睏了,捋不明白),或者明天可能會寫。
今天有事,雖然還是一題打卡。
2023年7月6日打卡
乙個機械人位於乙個 m x n 網格的左上角 機械人每次只能向下或者向右移動一步。機械人試圖達到網格的右下角。現在考慮網格中有障礙物。那麼從左上角到右下角將會有多少條不同的路徑?網格中的障礙物和空位置分別用 1 和 0 來表示。說明 m 和 n 的值均不超過 100。原題是有圖的,但是我懶得粘過來,...
7月29日打卡
1.貪心法中的小心機 挑戰p39頁貪心法,硬幣問題 其中有一步利用了乙個小心機 include include include using namespace std const int v 6 int c 6 a void solve printf d n ans int main scanf d...
精華 2023年6月29日 Canvas 刮刮樂
doctype html utf 8 canvas刮獎遊戲 title prize canvas style window.onload function 移動事件 canvas.onmousemove function event var x event.clientx 與x軸的距離 var y ...