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代碼
