定義棧的資料結構,請在該型別中實現乙個能夠得到棧中所含最小元素的min函式。
c++實現:
思路:應用乙個輔助棧,壓的時候,如果a棧的壓入比b棧壓入大,b棧不壓,,,,小於等於,ab棧同時壓入,出棧,如果,ab棧頂元素不等,a出,b不出。
class solution
}void pop()
int top()
int min()
};
python實現:
思路:直接用列表可以代替實現棧的功能
# -*- coding:utf-8 -*-
class solution:
def __init__(self):
self.a =
def push(self, node):
# write code here
def pop(self):
# write code here
self.a.pop(-1);
def top(self):
# write code here
return self.a[-1]
def min(self):
# write code here
return min(self.a)
劍指Offer 20 包含min函式的棧
定義棧的資料結構,請在該型別中實現乙個能夠得到棧中所含最小元素的min函式 時間複雜度應為o 1 注意 保證測試中不會當棧為空的時候,對棧呼叫pop 或者min 或者top 方法。第一反應 每次壓入乙個新元素進棧時,將棧裡的所有元素排序,讓最小的元素位於棧頂,這樣就能在o 1 時間得到最小元素。但是...
劍指offer 20 包含min函式的棧
主流想法 在看到這道題目的時候第一反應是要用乙個最小值來保留當前棧中最小值,但是也能夠很快地意識到比較麻煩的地方在於pop的時候怎麼更新min值,看了別人的題解之後都是使用了另外乙個棧來保持在入棧過程中曾經做過最小值的值,pop的時候判斷兩個棧頂元素是否一致,一致的話都要pop,在這種情況下取最小值...
劍指offer20 包含min函式的棧
定義棧的資料結構,請在該型別中實現乙個能夠得到棧中所含最小元素的min函式 時間複雜度應為o 1 對於乙個棧來說,要找到其中的最小值需要遍歷整個棧,時間複雜度為o n 既然要求要o 1 的時間複雜度,就只能考慮用空間來換時間了。那麼已經決定用空間來換時間,下一步就是確定考慮怎麼使用輔助空間。這個輔助...