使用stack1作为压入栈,使用stack2作为弹出栈;
压入时直接压入stack1,弹出时判断stack2是否为空,如果为空,证明队列头元素在stack1的底部,则依次将stack1中的元素压入stack2中;如果不为空,证明对头元素仍然在stack2的上层,直接弹出stack2中元素即可
class Solution { public: void push(int node) { stack1.push(node); } int pop() { if(stack2.empty()) { while(stack1.size()) { int x = stack1.top(); stack1.pop(); stack2.push(x); } } int res = stack2.top(); stack2.pop(); return res; } private: stack<int> stack1; // 压入栈 stack<int> stack2; // 弹出栈 };