雙端隊列

滑動窗口題目

由一個代表題目缚柳,引出一種結(jié)構(gòu)
【題目】
有一個整型數(shù)組arr和一個大小為w的窗口從數(shù)組的最左邊滑到最右邊埃脏,窗口每次 向右邊滑一個位置。
例如秋忙,數(shù)組為[4,3,5,4,3,3,6,7]彩掐,窗口大小為3時:
[4 3 5]4 3 3 6 7
4[3 5 4]3 3 6 7
4 3[5 4 3]3 6 7
4 3 5[4 3 3]6 7
4 3 5 4[3 3 6]7
4 3 5 4 3[3 6 7]
窗口中最大值為5 窗口中最大值為5 窗口中最大值為5 窗口中最大值為4 窗口中最大值為6 窗口中最大值為7
如果數(shù)組長度為n,窗口大小為w灰追,則一共產(chǎn)生n-w+1個窗口的最大值堵幽。
請實現(xiàn)一個函數(shù)。 輸入:整型數(shù)組arr弹澎,窗口大小為w朴下。
輸出:一個長度為n-w+1的數(shù)組res,res[i]表示每一種窗口狀態(tài)下的 以本題為例苦蒿,結(jié)果應(yīng)該返回{5,5,5,4,6,7}殴胧。
第一步,實現(xiàn)以下要求:
要求:

  1. 窗口只能右邊界或左邊界向右滑的情況下,維持窗口內(nèi)部最大值或者最小值快速更新的結(jié)構(gòu)
  2. 窗口內(nèi)最大值與最小值更新結(jié)構(gòu)的原理與實現(xiàn)
    用戶可以隨意地控制左邊界或右邊界的移動团滥,但是竿屹,左邊界不能超過右邊界,求每次窗口內(nèi)的最大值
    思路:
  • 使用雙端隊列灸姊,存儲在窗口內(nèi)的數(shù)據(jù)的index拱燃,并保證雙端隊列內(nèi)保存的index的排列順序是按照數(shù)據(jù)從大到小順序(嚴(yán)格從大到小)排列的力惯。(雙端隊列的左右兩端既可以加數(shù)據(jù)碗誉,也可以減數(shù)據(jù))
  • 當(dāng)右邊界向右滑時,將加入的數(shù)據(jù)從雙端隊列的右端加進去父晶,如果將數(shù)據(jù)放在最右邊诗充,可以在雙端隊列中使得數(shù)據(jù)保持從大到小的排序,則將index存入(即該數(shù)據(jù)比雙端隊列中最小的數(shù)還杏战ā);如果該數(shù)據(jù)比雙端隊列中最右邊的數(shù)據(jù)大碟绑,則依次從右邊移出雙端隊列中的數(shù)據(jù)俺猿,直到該數(shù)據(jù)可以加進去為止。
  • 當(dāng)左邊界向右滑時格仲,判斷雙端隊列中最大的數(shù)據(jù)是否是非法數(shù)據(jù)押袍,如果是,將最大的數(shù)據(jù)從雙端隊列的左邊移出凯肋,否則谊惭,不做任何操作。
  • 雙端隊列中存儲的index是從小到大排列的侮东。
  • 實際上圈盔,雙端隊列中維持的是,如果目前的窗口的右邊界不動了悄雅,讓左邊界依次往右移動驱敲,做窗口內(nèi)最大值的優(yōu)先級。
  • 估計時間復(fù)雜度宽闲,每個位置的數(shù)字众眨,最多進窗口一次,最多出窗口一次容诬。所以雙端隊列更新的總代價是O(N)娩梨,所以單次獲得窗口最大值的平均代價是O(1)。
    第二步览徒,解本道題
  1. 雙端隊列的右邊界移動三次狈定,然后求最大值
  2. 雙端隊列的右邊界移動一次,左邊界移動一次习蓬,求最大值
  3. 重復(fù)步驟二掸冤,直到右邊界到數(shù)組的最后一位厘托。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市稿湿,隨后出現(xiàn)的幾起案子铅匹,更是在濱河造成了極大的恐慌,老刑警劉巖饺藤,帶你破解...
    沈念sama閱讀 212,454評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件包斑,死亡現(xiàn)場離奇詭異,居然都是意外死亡涕俗,警方通過查閱死者的電腦和手機罗丰,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來再姑,“玉大人萌抵,你說我怎么就攤上這事≡疲” “怎么了绍填?”我有些...
    開封第一講書人閱讀 157,921評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長栖疑。 經(jīng)常有香客問我讨永,道長,這世上最難降的妖魔是什么遇革? 我笑而不...
    開封第一講書人閱讀 56,648評論 1 284
  • 正文 為了忘掉前任卿闹,我火速辦了婚禮,結(jié)果婚禮上萝快,老公的妹妹穿的比我還像新娘锻霎。我一直安慰自己,他們只是感情好揪漩,可當(dāng)我...
    茶點故事閱讀 65,770評論 6 386
  • 文/花漫 我一把揭開白布量窘。 她就那樣靜靜地躺著,像睡著了一般氢拥。 火紅的嫁衣襯著肌膚如雪蚌铜。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,950評論 1 291
  • 那天嫩海,我揣著相機與錄音冬殃,去河邊找鬼。 笑死叁怪,一個胖子當(dāng)著我的面吹牛审葬,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 39,090評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼涣觉,長吁一口氣:“原來是場噩夢啊……” “哼痴荐!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起官册,我...
    開封第一講書人閱讀 37,817評論 0 268
  • 序言:老撾萬榮一對情侶失蹤生兆,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后膝宁,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體鸦难,經(jīng)...
    沈念sama閱讀 44,275評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,592評論 2 327
  • 正文 我和宋清朗相戀三年员淫,在試婚紗的時候發(fā)現(xiàn)自己被綠了合蔽。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,724評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡介返,死狀恐怖拴事,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情圣蝎,我是刑警寧澤刃宵,帶...
    沈念sama閱讀 34,409評論 4 333
  • 正文 年R本政府宣布,位于F島的核電站捅彻,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏鞍陨。R本人自食惡果不足惜步淹,卻給世界環(huán)境...
    茶點故事閱讀 40,052評論 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望诚撵。 院中可真熱鬧缭裆,春花似錦、人聲如沸寿烟。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,815評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽筛武。三九已至缝其,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間徘六,已是汗流浹背内边。 一陣腳步聲響...
    開封第一講書人閱讀 32,043評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留待锈,地道東北人漠其。 一個月前我還...
    沈念sama閱讀 46,503評論 2 361
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親和屎。 傳聞我的和親對象是個殘疾皇子拴驮,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,627評論 2 350

推薦閱讀更多精彩內(nèi)容