設計乙個支援 push,pop,top 操作,並能在常數時間內檢索到最小元素的棧。
push(x) -- 將元素 x 推入棧中。
pop() -- 刪除棧頂的元素。
top() -- 獲取棧頂元素。
getmin() -- 檢索棧中的最小元素。
示例:
思路:使用乙個記錄最小元素的棧+乙個記錄所有數的棧,每次有比最小棧小的數就壓入,pop時,檢驗一下最小棧是否也需要popminstack minstack = new minstack();
minstack.push(-2);
minstack.push(0);
minstack.push(-3);
minstack.getmin(); --> 返回 -3.
minstack.pop();
minstack.top(); --> 返回 0.
minstack.getmin(); --> 返回 -2.
public class minstack
public void push(int x)
} public void pop()
public int top()
public int getmin()
}
注意點:
(1)對於棧的使用,通過雙向佇列arraydeque實現
(2)if (minstack.peek() == null || (int) minstack.peek() >= x) 第一次寫的時候沒有寫》=而是》,導致pop的時候出錯
swift演算法 最小棧
1 描述 設計乙個支援push pop top操作,並且能在常數時間內檢索到最小元素的棧。push x 將元素 x 推入棧中 pop 刪除棧頂的元素 top 獲取棧頂的元素 getmin 檢索棧中的最小元素 例1 var minstack minstack.init minstack.push 2 ...
演算法分析最小重量機器設計問題
今天想要分析的也是一道用回溯法搜尋排列樹的問題。1 問題描述 設某一機器由n個部件組成,每一種部件都可以從m個不同的 商處購得。設w i j 是從 商j處購得的部件i的重量,c i j 是相應的 給出總 不超過d的最小重量機器設計。2 解題思路 3 演算法設計 a.部件有n個,商有m個,分別用w i...
演算法分析最小重量機器設計問題
今天想要分析的也是一道用回溯法搜尋排列樹的問題。1 問題描述 設某一機器由n個部件組成,每一種部件都可以從m個不同的 商處購得。設w i j 是從 商j處購得的部件i的重量,c i j 是相應的 給出總 不超過d的最小重量機器設計。2 解題思路 3 演算法設計 a.部件有n個,商有m個,分別用w i...