leetcode
定義棧的資料結構,請在該型別中實現乙個能夠得到棧的最小元素的 min 函式在該棧中,呼叫 min、push 及 pop 的時間複雜度都是 o(1)。
方法一:輔助棧同步
可以多開乙個棧,來儲存最小值,每次新資料進棧時,和之前的最小值進行比較,如果小於,則壓入棧,否則,壓入之前的最小值。
保持最小值棧和資料棧的長度一致,進棧出棧的操作要同步。
class
minstack
:def
__init__
(self)
:"""
initialize your data structure here.
"""self.stack =
self.min_stack =
defpush
(self, x:
int)
->
none:if
len(self.min_stack)==0
or self.min_stack[-1
]>x:
else:-
1])def
pop(self)
->
none
:if self.stack:
self.stack.pop(
) self.min_stack.pop(
)def
top(self)
->
int:
return self.stack[-1
]def
getmin
(self)
->
int:
if self.min_stack:
return self.min_stack[-1
]
方法二:輔助棧不同步
在彈出時,考慮如果彈出值為最小值,那麼儲存最小值的棧也需要彈出,否則只有資料棧彈出
class
minstack
:def
__init__
(self)
:"""
initialize your data structure here.
"""self.stack =
self.tmp =
defpush
(self, x:
int)
->
none:if
len(self.tmp)==0
or self.tmp[-1
]>=x:
defpop
(self)
->
none:if
not self.stack:
return
if self.stack[-1
]== self.tmp[-1
]:self.stack.pop(
) self.tmp.pop(
)else
: self.stack.pop(
)def
top(self)
->
int:
if self.stack:
return self.stack[-1
]def
getmin
(self)
->
int:
if self.tmp:
return self.tmp[-1
]
Leetcode 包含min函式的棧
定義棧的資料結構,請在該型別中實現乙個能夠得到棧的最小元素的 min 函式在該棧中,呼叫 min push 及 pop 的時間複雜度都是 o 1 示例 minstack minstack new minstack minstack.push 2 minstack.push 0 minstack.pu...
LeetCode 棧 包含min函式的棧
定義棧的資料結構,請在該型別中實現乙個能夠得到棧的最小元素的 min 函式在該棧中,呼叫 min push 及 pop 的時間複雜度都是 o 1 示例 minstack minstack new minstack minstack.push 2 minstack.push 0 minstack.pu...
js 包含min函式的棧 包含min函式的棧
目標 定義棧的資料結構,請在該型別中實現乙個能夠得到棧的最小元素的 min 函式在該棧中,呼叫 min push 及 pop 的時間複雜度都是 o 1 設計思路 我們要做的是在我們每次資料入棧的時候,記錄當前資料棧中最小值,並且在pop 出棧之後依然能找到最小值 方案 如果只用乙個 min 變數來儲...