155實現最小棧

2021-10-03 20:16:54 字數 829 閱讀 4022

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

push(x) – 將元素 x 推入棧中。pop() – 刪除棧頂的元素。top() – 獲取棧頂元素。 getmin() – 檢索棧中的最小元素。

方法一 使用輔助棧

class

minstack

:def

__init__

(self)

: self.stack=

self.min_stack=

defpush

(self,x)

:#入棧

ifnot self.min_stack or x <= self.min_stack[-1

]:defpop

(self)

:#出棧,if檢視min_stack的最小值是否更新

if self.stack.pop(

)==self.min_stack[-1

]:self.min_stack.pop(

)def

top(self)

:#棧頂元素

if self.stack:

return self.stack[-1

]def

getmin

(self)

:#棧最小值,min_stack存在的意義

if self.min_stack:

return self.min_stack[-1

]

時間複雜度o(1),出棧,入棧,檢視棧頂元素的操作,不論資料規模多大,都只是有限個步驟

空間複雜度o(n),以空間換取時間

155 最小棧 C 實現

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

155 最小棧(JS實現)

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

leetcode 棧 155 最小棧

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