20 包含min函式的棧

2021-08-21 04:57:31 字數 447 閱讀 8359

題目:定義乙個棧的資料結構,請在該型別中實現乙個能夠得到棧中最小元素的min函式;

思路:可以使用兩個棧,乙個儲存資料,乙個儲存棧中的最小元素。例如:定義兩個棧stack1和stack2,將4壓入stack1,stack2為空,同時將4壓入stack2;然後將2壓入stack1,這時stack1的最小元素是2,將2壓入stack2;然後將3壓入stack1,stack1的最小元素還是2,也就是stack2的棧頂元素,所以仍將2壓入stack2;然後將1壓入stack1,1<2, 所以將1壓入stack2;當stack1 pop出去乙個元素時,stack2也同時pop,這樣保證了stack2的棧頂元素一直是相應的stack1的最小元素。

class solution 

void pop()

int top()

int min()

};

20 包含min函式的棧

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

20 包含min函式的棧

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

20 包含min函式的棧

定義棧的資料結構,請在該型別中實現乙個能夠得到棧中所含最小元素的min函式 時間複雜度應為o 1 var stack function push node function pop function top function min 增加了乙個輔助棧,每次壓入資料棧時,把當前棧裡面最小的值壓入輔助棧...