題目描述:
· 用兩個(gè)棧來實(shí)現(xiàn)一個(gè)隊(duì)列朴爬,完成隊(duì)列的入隊(duì)(push)和出隊(duì)(pop)操作。 隊(duì)列中的元素為int類型丈咐。
解題思路:
· stack1用于存壓入(push)燎猛,stack2用于彈出(pop)。
入隊(duì)(push)
· 直接stack1.push(node)就可以溉瓶。
出隊(duì)(pop):
· 如果stack2為空急鳄,就將stack1里的元素依次壓入stack2(這樣就把最后入隊(duì)【棧1的棧頂】的元素壓在【棧2的棧底】,先入隊(duì)的【棧1的棧底】的元素放在【棧2的棧頂】堰酿,先進(jìn)先出)疾宏,彈出stack2棧頂元素;如果stack2不為空触创,說明先入隊(duì)的元素還沒有全部出隊(duì)坎藐,直接彈出stack2棧頂元素即可。
代碼實(shí)現(xiàn)
思路1:
/**
* Definition for binary tree
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution
{
public:
void push(int node) {
stack1.push(node);
}
int pop() {
int top;
//如果stack2為空哼绑,從stack1中所有元素依次彈出壓入stack2
if(!stack2.size()){
while(stack1.size()){
stack2.push(stack1.top());
stack1.pop();
}
}
//每次彈出stack2的最頂部元素
top=stack2.top();
stack2.pop();
return top;
}
private:
stack<int> stack1; //用于push
stack<int> stack2; //用于pop
};