劍指offer系列20之包含min函式的棧

2021-09-11 13:52:10 字數 1341 閱讀 2374

定義棧的資料結構,請在該型別中實現乙個能夠得到棧中所含最小元素的min

minmi

n函式(時間複雜度應為o(1

)o(1)

o(1)

)。借助乙個輔助棧,輔助棧的top

topto

p值總是最小值。具體做法如下:

p us

hpush

push

方法:原棧直接入棧;輔助棧僅當當前為空或者入棧的值小於等於輔助棧棧頂的值時入棧。

p op

poppo

p方法:

當原棧不為空時,判斷輔助棧與原棧的棧頂值是否相同,若相同則兩者同時出棧;若不相同則僅原棧出棧。

t op

topto

p方法:

直接返回原棧棧頂值。

m in

minmi

n方法:

直接返回輔助棧棧頂的值。時間複雜度為(o(

1)

)(o(1))

(o(1))

。python實現

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

class

solution

: stack =

stack_temp =

defpush

(self, node)

:# write code here

iflen

(self.stack_temp)==0

:elif self.stack_temp[-1

]>=self.stack[-1

]:defpop

(self)

:# write code here

iflen

(self.stack)

>0:

if self.stack_temp[-1

]== self.stack[-1

]:self.stack_temp.pop(

) self.stack.pop(

)def

top(self)

:# write code here

return self.stack[-1

]def

min(self)

:# write code here

return self.stack_temp[-1

]

c++實現
class solution 

void

pop(

)int

top(

)int

min()}

;

《劍指offer》系列 1

最近一直在看劍指offer,這上面的題目都是比較考察程式設計能力的,打算做個記錄,把寫過的 儲存下來 1.實現乙個string類 面試官的考察點應該在以下幾點 1.模板類的書寫 2.對於賦值函式考察的幾點 1 是否返回引用,因為只有返回引用,才能連續的進行賦值 2 引數是否是常量 3 是否是自身賦值...

《劍指offer》系列 2

1.求斐波那契數列的第n項 這個題目很簡單,講遞迴的書上都是用這個來講的,但是面試的時候,如果你寫個遞迴,那估計會讓人失望的,因為遞迴的效率真是乙個問題,你可以測試一下,輸入50,基本上得到結果的時間,夠你去喝杯茶了 include using namespace std 使用遞迴效率太低了,甚至可...

劍指Offer之 包含min函式的棧

定義棧的資料結構,請在該型別中實現乙個能夠得到棧的最小元素的min函式。在該棧中,呼叫min,push,pop函式的世界複雜度都是o 1 維護乙個輔助棧s2,用來儲存當前棧中的最小元素 比如棧s1 2,4,3,1,5 輔助棧s2就是 2,2,2,1,1 include include using n...