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