239.滑動窗口最大值 (一刷至少需要理解思路)
之前講的都是棧的應(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
自定義了一個單調(diào)隊(duì)列,神奇
需要三個函數(shù)按咒,pop()迟隅、push()、getMaxValue()
本題沒有認(rèn)真寫,道理都懂玻淑,但是建議重刷
347.前 K 個高頻元素? (一刷至少需要理解思路)
大/小頂堆的應(yīng)用嗽冒, 在C++中就是優(yōu)先級隊(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ù)值在根部(雖然不是很懂一個堆哪里來的樹杈和根箫锤。贬蛙。。)
哦谚攒,發(fā)現(xiàn)了阳准,建立小頂堆的時候建立成了二叉樹的樣式
建議重刷,這數(shù)組和表建立的馏臭,一個比一個看起來復(fù)雜野蝇。。括儒。
缺省情況下priority_queue利用max-heap(大頂堆)完成對元素的排序绕沈,這個大頂堆是以vector為表現(xiàn)形式的complete binary tree(完全二叉樹)。
注意:
1帮寻、對于:priority_queue<pair<int,?int>,?vector<pair<int,?int>>,?mycomparsion>?pri_que;
2乍狐、對于.first:
3、對于public:和private:
注意:private可以通過函數(shù)間接的訪問
4固逗、對于unordered_map<int,?int>::iterator?it?=?map.begin();
5浅蚪、對于python中的map_.get(nums[i],?0):
如果nums[i]在map里面則返回nums[i], 否則返回0
總結(jié)
棧與隊(duì)列做一個總結(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ù)分布的么惜傲?
這個問題有兩個陷阱:
陷阱1:棧是容器適配器,底層容器使用不同的容器贝攒,導(dǎo)致棧內(nèi)數(shù)據(jù)在內(nèi)存中是不是連續(xù)分布操漠。
陷阱2:缺省情況下,默認(rèn)底層容器是deque饿这,那么deque的在內(nèi)存中的數(shù)據(jù)分布是什么樣的呢浊伙? 答案是:不連續(xù)的,下文也會提到deque长捧。
以下是第二題python代碼