目錄
用兩個棧實現佇列
包含min函式的棧
用兩個棧實現佇列
用兩個棧來實現乙個佇列,完成佇列的push和pop操作。 佇列中的元素為int型別。
solution
包含min函式的棧思路定義乙個輔助棧,用於存放資料棧每次入棧時的最小元素,輔助棧的棧頂元素是當前資料棧內的最小值。class
solution
intpop()
}int pop_element = stack2.
top();
stack2.
pop();
return pop_element;
}private
: stack<
int> stack1;
stack<
int> stack2;
};
舉例:建立乙個空資料棧和空輔助棧。
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...