LeetCode第155題 最小棧

2022-09-02 11:57:09 字數 1091 閱讀 3029

設計乙個支援 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.

思路: 使用太多封裝雖然偷了懶,效率影響確實很大...

使用兩個棧,乙個儲存真實的資料,另乙個儲存所有最小值

eg:push : -1 0 -2 3 4

push操作完成後,兩個棧的情況如下:

stack: -1 0 -2 3 4

mindata: -1 -2

只要當前mindata的top(-2)未被彈出,棧中的最小值就一直是-2.

如果此時stack彈出的值為(-2),那麼mindata中的值也要更新,將-2彈出.

那麼此時

stack: -1 0

mindata: -1

棧中的最小值就為-1了

1

class

minstack

1415

public

void push(int

x) 20}21

22public

void

pop()

26stack.pop();27}

2829

public

inttop()

3233

public

intgetmin()

36 }

leetcode題 155 最小棧(簡單)

一 題目描述 155.最小棧 簡單 設計乙個支援 push,pop,top 操作,並能在常數時間內檢索到最小元素的棧。push x 將元素 x 推入棧中。pop 刪除棧頂的元素。top 獲取棧頂元素。getmin 檢索棧中的最小元素。示例 minstack minstack new minstack...

LeetCode刷題筆記 155 最小棧

設計乙個支援 push,pop,top 操作,並能在常數時間內檢索到最小元素的棧。push x 將元素 x 推入棧中。pop 刪除棧頂的元素。top 獲取棧頂元素。getmin 檢索棧中的最小元素。略看sdc1的時候感覺getmin 有問題,但其實push 和pop 寫的很巧妙 比如依次錄入5,4,...

leetcode 棧 155 最小棧

設計乙個支援 push,pop,top 操作,並能在常數時間內檢索到最小元素的棧。push x 將元素 x 推入棧中。pop 刪除棧頂的元素。top 獲取棧頂元素。getmin 檢索棧中的最小元素。示例 minstack minstack new minstack minstack.push 2 m...