代碼隨想錄算法訓(xùn)練營第十三天(第十二天休息)|239. 滑動(dòng)窗口最大值 347.前 K 個(gè)高頻元素 總結(jié)

239.滑動(dòng)窗口最大值 (一刷至少需要理解思路)

之前講的都是棧的應(yīng)用,這次該是隊(duì)列的應(yīng)用了。

本題算比較有難度的,需要自己去構(gòu)造單調(diào)隊(duì)列,建議先看視頻來理解。

題目鏈接/文章講解/視頻講解:https://programmercarl.com/0239.%E6%BB%91%E5%8A%A8%E7%AA%97%E5%8F%A3%E6%9C%80%E5%A4%A7%E5%80%BC.html

自定義了一個(gè)單調(diào)隊(duì)列,神奇

需要三個(gè)函數(shù),pop()、push()、getMaxValue()

本題沒有認(rèn)真寫,道理都懂,但是建議重刷

347.前 K 個(gè)高頻元素? (一刷至少需要理解思路)

大/小頂堆的應(yīng)用, 在C++中就是優(yōu)先級(jí)隊(duì)列

本題是大數(shù)據(jù)中取前k值的經(jīng)典思路,了解想法之后,不算難。

題目鏈接/文章講解/視頻講解:https://programmercarl.com/0347.%E5%89%8DK%E4%B8%AA%E9%AB%98%E9%A2%91%E5%85%83%E7%B4%A0.html

運(yùn)用了小頂堆,就是小數(shù)值在根部(雖然不是很懂一個(gè)堆哪里來的樹杈和根。。。)

哦,發(fā)現(xiàn)了,建立小頂堆的時(shí)候建立成了二叉樹的樣式

建議重刷,這數(shù)組和表建立的,一個(gè)比一個(gè)看起來復(fù)雜。。。

缺省情況下priority_queue利用max-heap(大頂堆)完成對(duì)元素的排序,這個(gè)大頂堆是以vector為表現(xiàn)形式的complete binary tree(完全二叉樹)。

注意:

1、對(duì)于:priority_queue<pair<int,?int>,?vector<pair<int,?int>>,?mycomparsion>?pri_que;

2、對(duì)于.first:

3、對(duì)于public:和private:

注意:private可以通過函數(shù)間接的訪問

4、對(duì)于unordered_map<int,?int>::iterator?it?=?map.begin();

5、對(duì)于python中的map_.get(nums[i],?0):

如果nums[i]在map里面則返回nums[i], 否則返回0

總結(jié)

棧與隊(duì)列做一個(gè)總結(jié)吧,加油

https://programmercarl.com/%E6%A0%88%E4%B8%8E%E9%98%9F%E5%88%97%E6%80%BB%E7%BB%93.html?

可以出一道面試題:棧里面的元素在內(nèi)存中是連續(xù)分布的么?

這個(gè)問題有兩個(gè)陷阱:

陷阱1:棧是容器適配器,底層容器使用不同的容器,導(dǎo)致棧內(nèi)數(shù)據(jù)在內(nèi)存中是不是連續(xù)分布。

陷阱2:缺省情況下,默認(rèn)底層容器是deque,那么deque的在內(nèi)存中的數(shù)據(jù)分布是什么樣的呢? 答案是:不連續(xù)的,下文也會(huì)提到deque。

以下是第二題python代碼

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容