玩转算法之面试-第六章(栈和队列)
leetcode 20
此時棧頂?shù)淖罄ㄌ柡彤?dāng)前遍歷的右括號匹配,故將左括號從棧頂pop出。
leetcode 150:
leetcode 71
棧和遞歸的關(guān)系
遞歸算法:二叉樹中的算法
、二叉樹的前序遍歷,中序遍歷,后序遍歷
前序遍歷代碼:
練習(xí)題:使用棧模擬系統(tǒng)棧,寫出非遞歸程序
模擬在棧中推入命令
訪問根節(jié)點(diǎn):
相應(yīng)的推入
此時棧頂是打印1,1出來,然后訪問1的左孩子,其實就是訪問點(diǎn)2
訪問后,相應(yīng)的將2的3個命令相應(yīng)的推入
訪問2的左右孩子,由于均為空,直接取出命令,最后訪問1的右孩子3
將3 的三條命令推入棧,然后循環(huán)結(jié)束
練習(xí):經(jīng)典非遞歸方法,去理解遞歸過程
練習(xí)題:leetcode:
1 理解整形列表
迭代遍歷: hasNext判斷是否遍歷到了最后一項
next()去訪問后面一個元素
6-46 隊列
隊列的基本應(yīng)用-廣度優(yōu)先便利
樹;層次遍歷
圖;無權(quán)圖的最短路徑
leetcode 102
關(guān)鍵點(diǎn):標(biāo)記點(diǎn)在那個層
練習(xí)題:
leetcode 107
leetcode 103
leetcode 199
BFS(廣度優(yōu)先遍歷)和圖的最短路徑
leetocode 279
最少的平方數(shù):
思考:如果沒有解怎么辦?
是否可能沒有解?不可能,因為有1
邊界情況是否為真的邊界情況
大數(shù)指向小數(shù)
數(shù)據(jù)對:第一個數(shù)表示具體第幾個數(shù)字 第二數(shù)表示經(jīng)歷了幾段路徑到達(dá)該點(diǎn)
性能問題:num-i*i會重復(fù)推入隊列,冗余的節(jié)點(diǎn)
改進(jìn):
這個相對上一版會快3倍左右
leetcode 127
衍生題:
leetcode 126
使用隊列求解無權(quán)圖最短路徑
優(yōu)先隊列
優(yōu)先隊列的底層實現(xiàn):堆
對于堆的底層實現(xiàn),白板編程
使用優(yōu)先隊列解決算法問題:
優(yōu)先對列屏蔽了堆的具體實現(xiàn)過程
優(yōu)先隊列,默認(rèn)情況下是最大堆:從大到小
最小堆的實現(xiàn):從小到大
如果自定義了:
個位數(shù)越大越靠前
6-7
leetcode 347
當(dāng)其中的n和k比較接近時,可以采用以下的思路:
leetcode 23
k分的歸并排序
具體k去多大的時候,該歸并排序最優(yōu)
總結(jié)
以上是生活随笔為你收集整理的玩转算法之面试-第六章(栈和队列)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: transformer xl在文本生成上
- 下一篇: app = Flask(__name__