《劍指Offer》刷題筆記之棧(一)

2021-10-03 05:37:32 字數 1279 閱讀 3832

目錄

用兩個棧實現佇列

包含min函式的棧

用兩個棧實現佇列

用兩個棧來實現乙個佇列,完成佇列的push和pop操作。 佇列中的元素為int型別。

solution

class

solution

intpop()

}int pop_element = stack2.

top();

stack2.

pop();

return pop_element;

}private

: stack<

int> stack1;

stack<

int> stack2;

};

包含min函式的棧思路定義乙個輔助棧,用於存放資料棧每次入棧時的最小元素,輔助棧的棧頂元素是當前資料棧內的最小值。

舉例:建立乙個空資料棧和空輔助棧。
1.資料棧中壓入3,輔助棧為空棧,最小值為3,輔助棧壓入3

2.資料棧中壓入4,4大於輔助棧的棧頂元素3,最小值為3,輔助棧壓入3

3.資料棧中壓入2,2小於輔助棧的棧頂元素3,最小值為2,輔助棧壓入2

4.資料棧中壓入1,1小於輔助棧的棧頂元素2,最小值為1,輔助棧壓入1

5.資料棧彈出棧頂元素1,輔助棧也同時彈出棧頂元素1,保證輔助棧中最小元素的準確性。

6.資料棧彈出棧頂元素2,輔助棧也同時彈出棧頂元素2。

7.資料棧中壓入0。。。

**注意:**資料棧和輔助棧操作同步,即對資料棧壓入時,同時輔助棧也壓入,(注意資料棧壓入值大於當前輔助棧棧頂元素的情況,此時仍要在輔助棧壓入再次壓入棧頂元素);資料棧彈出棧頂元素時,同時彈出輔助棧棧頂元素。

劍指offer刷題筆記

給定一顆二叉搜尋樹,請找出其中的第k大的結點。例如,5 3 7 2 4 6 8 中,按結點數值大小順序第三個結點的值為4。struct treenode class solution treenode kthnode treenode proot,int k 非遞迴實現 class solution...

leetcode刷題 劍指offer 棧佇列堆

題目描述 class cqueue stack1.push value public int deletehead if stack2.isempty return 1 else return stack2.pop 沒有第二解法了,就這麼乙個辦法 題目描述 解法1 輔助棧,乙個棧完成push,pop...

劍指offer刷題

面試題6 從尾到頭列印鍊錶 struct listnode class solution reverse res.begin res.end return res 替換空格class solution int newnumstr numstr numspace 2 if newnumstr leng...