20 包含min的函式

2021-10-23 23:18:34 字數 1244 閱讀 5457

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

把每次壓棧時的最小元素(每次新壓棧元素和之前的最小元素進行比較)放進另外乙個專門存放最小值的輔助棧中。例如:

(1)初始空棧,壓入元素3,目前3是最小值,放入輔助棧,目前資料棧3,輔助棧3;

(2)壓入元素4,因為4>3,所以仍然往輔助棧中壓入3,目前資料棧3, 4,輔助棧中為3,3;

(3)壓入元素2,因為2<3,所以往輔助棧中壓入2, 目前資料棧3,4,2,輔助棧中為3,3,2;

(4)壓入元素1, 因為1<2,所以往輔助棧中壓入1,目前資料棧3,4,2,1,輔助棧中為3,3,2,1;

(5)彈出1,資料棧3,4,2,輔助棧中為3,3,2;

(6)彈出2,資料棧3,4,輔助棧中為3,3;

(7)壓入元素0,資料棧3,4,0,輔助棧中為3,3,0.

# -*- coding:utf-8 -*-

class

solution

:def

__init__

(self)

: self.stack =

self.minstack =

defpush

(self, node)

:# write code here

ifnot self.minstack or node < self.minstack[-1

]:# 儲存最小元素到棧頂

else:-

1])def

pop(self)

:# write code here

if self.stack:

self.stack.pop(

) self.minstack.pop(

)def

top(self)

:# write code here

if self.stack:

return self.stack[-1

]else

:return

none

defmin

(self)

:# write code here

if self.minstack:

return self.minstack[-1

]else

:return

none

20 包含min函式的棧

思路1 選用存放資料的棧s和存放當前最小值的輔助棧mins,當s記憶體入比當前最小值還小的樹,則該數字入輔助棧,若存放值比當前最小值大,則再次存入當前最小值到輔助棧 這樣mins存在冗餘資訊,可進一步改進。1 class solution else void pop int top int min ...

20 包含min函式的棧

題目 定義乙個棧的資料結構,請在該型別中實現乙個能夠得到棧中最小元素的min函式 思路 可以使用兩個棧,乙個儲存資料,乙個儲存棧中的最小元素。例如 定義兩個棧stack1和stack2,將4壓入stack1,stack2為空,同時將4壓入stack2 然後將2壓入stack1,這時stack1的最小...

20 包含min函式的棧

題目描述 定義棧的資料結構,請在該型別中實現乙個能夠得到棧中所含最小元素的min函式 時間複雜度應為o 1 python class solution def init self self.stack 用於存放對應棧元素所在位置及之前元素最小值 self.assist defpush self,no...