文章目錄
算法作為極其重要的一點,是大學生畢業找工作的核心競争力,是以為了不落後與人,開始刷力扣算法題!
大家好,我是布小禅,一個盡力讓無情的代碼變得生動有趣的IT小白,很高興能偶認識你,關注我,每天堅持學點東西,我們以後就是大佬啦!
📢 :
❤布小禅❤ 📢 作者專欄: ❤Python❤ ❤Java❤ ❤力扣題❤ 這是我刷第 72/100 道力扣簡單題
設計一個支援 push ,pop ,top 操作,并能在常數時間内檢索到最小元素的棧。
push(x) —— 将元素 x 推入棧中。
pop() —— 删除棧頂的元素。
top() —— 擷取棧頂元素。
getMin() —— 檢索棧中的最小元素。
來源:力扣(LeetCode)
連結:
https://leetcode-cn.com/problems/min-stack著作權歸領扣網絡所有。
商業轉載請聯系官方授權,非商業轉載請注明出處。
示例1:
輸入:
["MinStack","push","push","push","getMin","pop","top","getMin"]
[[],[-2],[0],[-3],[],[],[],[]]
輸出:
[null,null,null,null,-3,null,0,-2]
解釋:
MinStack minStack = new MinStack();
minStack.push(-2);
minStack.push(0);
minStack.push(-3);
minStack.getMin(); --> 傳回 -3.
minStack.pop();
minStack.top(); --> 傳回 0.
minStack.getMin(); --> 傳回 -2.
• 1
• 2
• 3
• 4
• 5
• 6
• 7
• 8
• 9
• 10
• 11
• 12
• 13
• 14
• 15
• 16
提示:pop、top 和 getMin 操作總是在 非空棧 上調用。
思路1
因為需要使用O(1)求最小棧元素
-
是以棧需要多一個元素記錄最小元素
實際操作後發現使用數組實作的棧行不通
連結清單實作的可以
在每個節點都存儲兩個元素,一個為目前,一個為最小
- 每次向數組實作的棧中存放兩個元素
-
- 一個為目前值
-
一個為最小值
出棧是也同樣如此,這樣才能保證每次出棧後還有一個目前棧内的最小值
輸入:
["MinStack","push","push","push","getMin","pop","top","getMin"]
[[],[-2],[0],[-3],[],[],[],[]]
輸出:
[null,null,null,null,-3,null,0,-2]
解釋:
MinStack minStack = new MinStack();
minStack.push(-2);
minStack.push(0);
minStack.push(-3);
minStack.getMin(); --> 傳回 -3.
minStack.pop();
minStack.top(); --> 傳回 0.
minStack.getMin(); --> 傳回 -2.
堅持最重要,每日一題必不可少!😸
期待你的關注和督促!😛