定義棧的資料結構,請在該型別中實現乙個能夠得到棧中所含最小元素的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...