Leetcode 包含min函式的棧

2021-10-03 07:17:07 字數 1755 閱讀 3175

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 變數來儲...