演算法總結 堆疊

2021-09-07 20:53:27 字數 628 閱讀 4257

先說stack的題目

stack的實現:鍊錶,陣列

題目:(1)簡單的:min stack,乙個陣列實現三個stack

(2)經典的stack問題:經典漢諾塔問題,逆波蘭式計算或者產生逆波蘭式,簡化檔案路徑,驗證括號對是否合法,找出最長有效括號(貪心+stack求解)

(3)涉及tree的遍歷問題:tree中序遍歷的迭代解法,二叉搜尋樹的兩節點和(two sum思路)

(4)***stack排序問題***:為stack排序,從柱狀圖裡找最大矩形(本質上類似stack排序),構造陣列的maxtree(和最大矩形題目類似思路)

(5)蛋疼的其他問題:僅使用遞迴反轉乙個stack(兩個遞迴函式,***hard***)

再說佇列的題目

佇列的實現:鍊錶

題目:貓狗佇列(鍊錶合併),兩個stack實現佇列,陣列滑動視窗的最大值(類似stack排序做,和柱狀裡找最大矩形題目解法有點類似,***hard***)

最後是堆的題目

題目:(1)經典問題:合併多個有序鍊錶,行列有序矩陣topk(k*logk解法,j+1,i+1)

(2)***需要觀察總結規律的***:陣列滑動視窗的最大值(使用優先順序佇列剔除「過期」的最大值),最大值-最小值<=num的子陣列數目(滑動視窗+堆)

堆疊的總結

棧 1.先進先出 2.由作業系統進行動態釋放記憶體,區域性變數的值,類似資料結構中棧操作push pop 操作 3.使用一級快取 儲存器山 速度快於堆,呼叫時在儲存空間中,呼叫完畢就釋放。堆 隊 1.先進後出 2.由程式設計師進行分配釋放,若程式設計師不釋放,則程式結束時由作業系統釋放 3.分配方式...

堆疊排序演算法

堆排序 維護的二叉樹是一顆完全二叉樹,大頂堆用來公升序排序,要求父節點大於等於左右子節點。而小丁堆用來降序排序,要求父節點小於等於左右子節點。堆排序 如果按公升序排序,就維護最大堆,降序就維護最小堆 這裡我們按公升序講 每次把最大元素放在堆頂,然後交換陣列的頭尾兩個元素,這樣陣列的最後乙個 元素就是...

堆疊演算法筆記

堆疊都是一種資料項按序排列的資料結構,只能在一端 稱為棧頂 top 對資料項進行插入和刪除。堆 資料結構 堆可以被看成是一棵樹,如 堆排序。進出順序隨意 棧 資料結構 一種先進後出的資料結構。可以看到sort heap時,必須先是乙個堆 兩個特性 1 最大元素在第乙個 2 新增或者刪除元素以對數時間...