面試題30 包含min函式的棧

2021-10-03 10:59:35 字數 1295 閱讀 5985

定義棧的資料結構,請在該型別中實現乙個能夠得到棧的最小元素的 min 函式在該棧中,呼叫 min、push 及 pop 的時間複雜度都是 o(1)。

示例:minstack minstack = new minstack();

minstack.push(-2);

minstack.push(0);

minstack.push(-3);

minstack.min(); --> 返回 -3.

minstack.pop();

minstack.top(); --> 返回 0.

minstack.min(); --> 返回 -2.

思路:用輔助棧儲存當前data的最小值,輔助棧頭即為min值

class

minstack

:def

__init__

(self)

:"""

initialize your data structure here.

"""self.stack =

self.min_stack =

defpush

(self, x:

int)

->

none:if

not self.min_stack:

else

:if self.min_stack[-1

]< x:-1

])else

:def

pop(self)

->

none

: self.stack.pop(-1

) self.min_stack.pop(-1

)def

top(self)

->

int:

if self.stack:

return self.stack[-1

]else

:return

defmin

(self)

->

int:

return self.min_stack[-1

]# 用輔助棧儲存當前data的最小值,輔助棧頭即為min值

# your minstack object will be instantiated and called as such:

# obj = minstack()

# obj.push(x)

# obj.pop()

# param_3 = obj.top()

# param_4 = obj.min()

面試題30 包含min函式的棧

定義棧的資料結構,請在該型別中實現乙個能夠得到棧的最小元素的min函式。在該棧中,呼叫min push及pop的時間複雜度都是o 1 思路 利用乙個輔助棧來存放最小值 棧 3,4,2,1 輔助棧 3,3,2,1 每入棧一次,就與輔助棧頂比較大小,如果小就入棧,如果大就入棧當前的輔助棧頂 當出棧時,輔...

面試題30 包含min函式的棧

一 題目 定義棧的資料結構,請在該型別中實現乙個能夠得到棧的最小元素的min函式。在該棧中,呼叫min push及pop的時間複雜度都是o 1 二 關鍵 1.新增輔助棧,每次新增乙個元素,就往輔助棧中新增當前最小的那個元素。三 解釋 四 pragma once include include tem...

面試題30 包含min函式的棧

思路 使用輔助棧。棧a實現正常的push,pop,top函式。棧b在每次棧apush的時候判斷,棧頂元素是否 要push進棧a的元素。注意的點 1.if b.empty b.peek x 此處必須要 因為在 情況下,push 0 push 0 pop 棧b就沒有元素了。2.pop 函式中,a.pop...