155.最小棧
題目:
設計一個支援 push ,pop ,top 操作,並能在常數時間內檢索到最小元素的棧。
push(x) —— 將元素 x 推入棧中。
pop() —— 刪除棧頂的元素。
top() —— 獲取棧頂元素。
getMin() —— 檢索棧中的最小元素。
示例:
輸入:
[“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.
提示:
pop、top 和 getMin 操作總是在 非空棧 上呼叫。
思路:
用一個棧維護正常的進棧出棧,另一個棧中每次存入都要比較,存入最小的元素,這樣getMin就可以從最小棧中獲取值
程式碼:
class MinStack {
public:
/** initialize your data structure here. */
stack<int> stk, stk_min;
MinStack() {
}
void push(int x) {
stk.push(x);
if (stk_min.empty()) stk_min.push(x);
else stk_min.push(min(x, stk_min.top()));
}
void pop() {
stk.pop();
stk_min.pop();
}
int top() {
return stk.top();
}
int getMin() {
return stk_min.top();
}
};
相關文章
- 155. 最小棧
- 【LeetCode】155. 最小棧LeetCode
- 每日leetcode——155. 最小棧LeetCode
- LeetCode-最小棧LeetCode
- 2018-11-24 最小棧
- leetcode.最小棧問題LeetCode
- 1201-用棧實現最小佇列佇列
- Leetcode 演算法題解系列 - 最小棧LeetCode演算法
- 漫畫演算法筆記 最小棧演算法筆記
- leetcode155. 最小棧 1441. 用棧操作構建陣列 劍指 Offer 09. 用兩個棧實現佇列LeetCode陣列佇列
- 最小堆
- 順序棧————遍歷、出棧、入棧
- 演算法題:O(1)時間複雜度實現獲取棧的最大值、最小值演算法時間複雜度
- Nginx - 最小配置Nginx
- Java棧與棧上分配Java
- LeetCode題解(面試03.02):設計能夠在常數時間內檢索到最小元素的棧(Python)LeetCode面試Python
- 資料結構:棧的基本概念、順序棧、共享棧以及鏈棧資料結構
- 資料結構(筆試題-棧(入棧出棧)資料結構筆試
- 棧
- 最小生成樹
- 最小圓覆蓋
- (樹_)求最小深度
- 建立最小的SpringBootSpring Boot
- 最大流最小割
- 1.1.3.3 最小割之最小權覆蓋集、最大權獨立集
- 【棧】RailsAI
- Python棧Python
- JavaScript棧JavaScript
- 【模板】最小生成樹
- 網路流-最小割
- 最小連通代價
- 最小度限制生成樹
- 求最小k個數
- 最小編輯代價
- 最小斯坦納樹初探
- 快速創業之全棧技術棧創業全棧
- 【知識】字串 最小表示法字串
- 【模板】最小生成樹-kruskal