【DW1月-力扣刷題】Task05 優(yōu)先隊列

參考鏈接:https://github.com/itcharge/LeetCode-Py

一智润、簡介

優(yōu)先隊列(Priority Queue):一種特殊的隊列赏迟。在優(yōu)先隊列中好芭,元素被賦予優(yōu)先級虑凛,當訪問隊列元素時邑蒋,具有最高優(yōu)先級的元素最先刪除栓票。

優(yōu)先隊列與普通隊列最大的不同點在于出隊順序司训。

  • 普通隊列的出隊順序跟入隊順序相關(guān)耘子,符合「先進先出(First in, First out)」的規(guī)則。
  • 而優(yōu)先隊列的出隊順序跟入隊順序無關(guān)她我,優(yōu)先隊列是按照元素的優(yōu)先級來決定出隊順序的虹曙。優(yōu)先級高的元素優(yōu)先出隊,優(yōu)先級低的元素后出隊番舆。優(yōu)先隊列符合 「最高級先出(First in, Largest out)」 的規(guī)則酝碳。

二、適用場景

  • 數(shù)據(jù)壓縮:赫夫曼編碼算法恨狈;
  • 最短路徑算法:Dijkstra 算法疏哗;
  • 最小生成樹算法:Prim 算法;
  • 任務(wù)調(diào)度器:根據(jù)優(yōu)先級執(zhí)行系統(tǒng)任務(wù)禾怠;
  • 事件驅(qū)動仿真:顧客排隊算法返奉;
  • 選擇問題:查找第 k 個最小元素。
  • Python 中也可以通過 heapq 來實現(xiàn)優(yōu)先隊列吗氏。

三芽偏、實現(xiàn)方式

優(yōu)先隊列所涉及的基本操作跟普通隊列差不多,主要是 「入隊操作」 和 「出隊操作」弦讽。
而優(yōu)先隊列的實現(xiàn)方式也有很多種污尉,除了使用「數(shù)組(順序存儲)實現(xiàn)」與「鏈表(鏈式存儲)實現(xiàn)」之外,我們最常用的是使用 「二叉堆結(jié)構(gòu)實現(xiàn)」優(yōu)先隊列往产。
以下是三種方案的介紹和總結(jié)被碗。

  • 數(shù)組(順序存儲)實現(xiàn)優(yōu)先隊列:入隊操作直接插入到數(shù)組隊尾,時間復(fù)雜度為 O(1)仿村。出隊操作需要遍歷整個數(shù)組蛮放,找到優(yōu)先級最高的元素,返回并刪除該元素奠宜,時間復(fù)雜度為 O(n)包颁。
  • 鏈表(鏈式存儲)實現(xiàn)優(yōu)先隊列:鏈表中的元素按照優(yōu)先級排序瞻想,入隊操作需要為待插入元素創(chuàng)建節(jié)點,并在鏈表中找到合適的插入位置娩嚼,時間復(fù)雜度為 O(n)蘑险。出隊操作直接返回鏈表隊頭元素,并刪除隊頭元素岳悟,時間復(fù)雜度為 O(1)佃迄。
  • 二叉堆結(jié)構(gòu)實現(xiàn)優(yōu)先隊列:構(gòu)建一個二叉堆結(jié)構(gòu),二叉堆按照優(yōu)先級進行排序贵少。入隊操作就是將元素插入到二叉堆中合適位置呵俏,時間復(fù)雜度為 O(log_2n)。吹對操作則返回二叉堆中優(yōu)先級最大節(jié)點并刪除滔灶,時間復(fù)雜度也是 O(log_2n)普碎。
    三種結(jié)構(gòu)實現(xiàn)的優(yōu)先隊列入隊操作和出隊操作的時間復(fù)雜度總結(jié)如下:
    時間復(fù)雜度對比圖

四、總結(jié)

經(jīng)過為期半個月的力扣刷題學(xué)習(xí)录平,我從害怕做題到有一點點興趣麻车,我覺得這件事情是值得繼續(xù)堅持下去的,雖然現(xiàn)在還是不太懂斗这,至少在旁邊轉(zhuǎn)悠动猬,繼續(xù)前進應(yīng)該能到門邊上的。這次課程的設(shè)計者非常用心表箭,知識點很細致赁咙,而且很全面,可能有一點點小的誤差被其他同學(xué)發(fā)現(xiàn)了免钻,但這是一件更好的事情彼水,不斷地改進將會得到更進一步的提升。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末伯襟,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子握童,更是在濱河造成了極大的恐慌姆怪,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,122評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件澡绩,死亡現(xiàn)場離奇詭異稽揭,居然都是意外死亡,警方通過查閱死者的電腦和手機肥卡,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評論 3 395
  • 文/潘曉璐 我一進店門溪掀,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人步鉴,你說我怎么就攤上這事揪胃×в矗” “怎么了?”我有些...
    開封第一講書人閱讀 164,491評論 0 354
  • 文/不壞的土叔 我叫張陵喊递,是天一觀的道長随闪。 經(jīng)常有香客問我,道長骚勘,這世上最難降的妖魔是什么铐伴? 我笑而不...
    開封第一講書人閱讀 58,636評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮俏讹,結(jié)果婚禮上当宴,老公的妹妹穿的比我還像新娘。我一直安慰自己泽疆,他們只是感情好户矢,可當我...
    茶點故事閱讀 67,676評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著于微,像睡著了一般逗嫡。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上株依,一...
    開封第一講書人閱讀 51,541評論 1 305
  • 那天驱证,我揣著相機與錄音,去河邊找鬼恋腕。 笑死抹锄,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的荠藤。 我是一名探鬼主播伙单,決...
    沈念sama閱讀 40,292評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼哈肖!你這毒婦竟也來了吻育?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,211評論 0 276
  • 序言:老撾萬榮一對情侶失蹤淤井,失蹤者是張志新(化名)和其女友劉穎布疼,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體币狠,經(jīng)...
    沈念sama閱讀 45,655評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡游两,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,846評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了漩绵。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片贱案。...
    茶點故事閱讀 39,965評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖止吐,靈堂內(nèi)的尸體忽然破棺而出宝踪,到底是詐尸還是另有隱情侨糟,我是刑警寧澤,帶...
    沈念sama閱讀 35,684評論 5 347
  • 正文 年R本政府宣布肴沫,位于F島的核電站粟害,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏颤芬。R本人自食惡果不足惜悲幅,卻給世界環(huán)境...
    茶點故事閱讀 41,295評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望站蝠。 院中可真熱鬧汰具,春花似錦、人聲如沸菱魔。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽澜倦。三九已至聚蝶,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間藻治,已是汗流浹背碘勉。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留桩卵,地道東北人验靡。 一個月前我還...
    沈念sama閱讀 48,126評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像雏节,于是被迫代替她去往敵國和親胜嗓。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,914評論 2 355

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