初級演算法之設計問題 最小棧

2021-09-10 02:09:11 字數 864 閱讀 6919

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

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

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

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

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

示例:

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時,檢驗一下最小棧是否也需要pop

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...