leetcode專題訓練 棧和佇列

2021-10-21 18:15:56 字數 1929 閱讀 9519

1、155. 最小棧

設計乙個支援 push ,pop ,top 操作,並能在常數時間內檢索到最小元素的棧。

push(x) —— 將元素 x 推入棧中。

pop() —— 刪除棧頂的元素。

top() —— 獲取棧頂元素。

getmin() —— 檢索棧中的最小元素。

解答:兩個棧,乙個維護最小值

2、150. 逆波蘭表示式求值

根據 逆波蘭表示法,求表示式的值。

有效的運算子包括 +, -, *, / 。每個運算物件可以是整數,也可以是另乙個逆波蘭表示式。

解答:棧的經典應用

3、394. 字串解碼

給定乙個經過編碼的字串,返回它解碼後的字串。

編碼規則為: k[encoded_string],表示其中方括號內部的 encoded_string 正好重複 k 次。注意 k 保證為正整數。

你可以認為輸入字串總是有效的;輸入字串中沒有額外的空格,且輸入的方括號總是符合格式要求的。

此外,你可以認為原始資料不包含數字,所有的數字只表示重複的次數 k ,例如不會出現像 3a 或 2[4] 的輸入

解答:注意字串和陣列的相互轉換。

4、94. 二叉樹的中序遍歷

5、133. 轉殖圖

給你無向連通圖中乙個節點的引用,請你返回該圖的深拷貝(轉殖)。

圖中的每個節點都包含它的值valint) 和其鄰居的列表(list[node])。

6、200. 島嶼數量

給你乙個由 '1'(陸地)和 '0'(水)組成的的二維網格,請你計算網格中島嶼的數量。

島嶼總是被水包圍,並且每座島嶼只能由水平方向和/或豎直方向上相鄰的陸地連線形成。

此外,你可以假設該網格的四條邊均被水包圍。

解答:從任意陸地點出發,一次性遍歷完,把該點周圍的陸地全變為水。 看有多少個陸地。

7、84. 柱狀圖中最大的矩形

參考這篇文章,解釋的非常到位

單調棧經典題,必會。

從左到右遍歷,如果發現比上乙個柱子高的柱子,則計算可以接到的雨水數量。

注意,乙個凹形的水槽,是分多次計算的,每次計算的是乙個矩形。

9、542. 01 矩陣

給定乙個由 0 和 1 組成的矩陣,找出每個元素到最近的 0 的距離。

兩個相鄰元素間的距離為 1 。

解答:要求最短距離(層數),肯定bfs比dfs更加合適。

bfs使用的資料結構是佇列。

leetcode演算法專題訓練 四 棧與佇列專題

劍指 offer 09.用兩個棧實現佇列 解題思路 設定兩個佇列,左邊的佇列用來入隊,右邊的佇列用來出隊。時間複雜度 o 1 空間複雜度 o 1 class cqueue void int value intdeletehead int val stk2.top stk2.pop return va...

LeetCode 單調棧專題

單調棧,顧名思義,是維持單調遞增或遞減的棧 單調遞增棧的形式如上,適合尋找,距離他最近的,比他小的,左右兩邊元素 與單調遞增棧的用法相反 單調遞增棧的原理 class solution st.push i 單調棧套路 return ans 單調遞減棧 class solution st.push i...

leetcode演算法專題訓練 七 查詢專題

33.搜尋旋轉排序陣列題目描述 公升序排列的整數陣列 nums 在預先未知的某個點上進行了旋轉 例如,0,1,2,4,5,6,7 經旋轉後可能變為 4,5,6,7,0,1,2 請你在陣列中搜尋 target 如果陣列中存在這個目標值,則返回它的索引,否則返回 1 每乙個數都是獨一無二的。解題思路 二...