2018-11-24 最小棧
題目:
設計一個支援 push,pop,top 操作,並能在常數時間內檢索到最小元素的棧。
- push(x) -- 將元素 x 推入棧中。
- pop() -- 刪除棧頂的元素。
- top() -- 獲取棧頂元素。
- getMin() -- 檢索棧中的最小元素。
解法:
維持兩個棧, 一個是正常的棧, 一個棧的棧頂是正常棧的最小元素.
在每次壓入棧的時候, 保持棧頂元素是最小的, 然後入棧即可.
class MinStack {
private Stack<Integer> stack;
private Stack<Integer> mStack;
private int length = 0;
/** initialize your data structure here. */
public MinStack() {
stack = new Stack<>();
mStack = new Stack<>();
}
public void push(int x) {
stack.push(x);
if(length == 0){
mStack.push(x);
}else{
// 壓入棧的時候保證當前棧頂元素是最小的
mStack.push(Math.min(mStack.peek(), x));
}
length += 1;
}
public void pop() {
length -= 1;
mStack.pop();
stack.pop();
}
public int top() {
return stack.peek();
}
public int getMin() {
return mStack.peek();
}
}
相關文章
- 155. 最小棧
- 155.最小棧
- LeetCode-最小棧LeetCode
- 【LeetCode】155. 最小棧LeetCode
- 每日leetcode——155. 最小棧LeetCode
- leetcode.最小棧問題LeetCode
- 1201-用棧實現最小佇列佇列
- Leetcode 演算法題解系列 - 最小棧LeetCode演算法
- 漫畫演算法筆記 最小棧演算法筆記
- GoCN每日新聞(2018-11-24)Go
- 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個數
- 最小編輯代價
- 最小斯坦納樹初探
- 快速創業之全棧技術棧創業全棧
- 【知識】字串 最小表示法字串