堆疊 155 最小棧

2022-08-10 17:42:13 字數 1204 閱讀 8270

題目

設計乙個支援 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 操作總是在 非空棧 上呼叫。

思路分析:

棧是屬於乙隻有乙個出口進行讀取的資料結構,要在整個棧裡進行遍歷非常困難,所以我們自然想到用乙個輔助棧來儲存最小值;

演算法思路:

用乙個stack和乙個minstack;minstack的棧頂用來儲存當前stack棧中的最小元素;

當push進乙個元素時,stack中直接push進乙個元素時,如果該元素小於等於minstack棧頂的元素時,即更新minstack,將其也push進minstack中。

當pop時,注意pop的元素是否為minstack中的棧頂元素(即stack中最小元素),如果是,則minstack也要pop,更新最小元素;

getmin直接彈出minstack中的棧頂元素即可

**如下:

class

minstack

public

void push(int x)

}public

void pop()

}public

inttop()

public

int getmin()

}

leetcode 棧 155 最小棧

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

155實現最小棧

題意 設計乙個支援 push,pop,top 操作,並能在常數時間內檢索到最小元素的棧。push x 將元素 x 推入棧中。pop 刪除棧頂的元素。top 獲取棧頂元素。getmin 檢索棧中的最小元素。方法一 使用輔助棧class minstack def init self self.stack...

LeetCode 簡單 棧 155 最小棧

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