本文主要是介绍leetcode-225. Implement Stack using Queues,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Implement the following operations of a stack using queues.
push(x) – Push element x onto stack.
pop() – Removes the element on top of the stack.
top() – Get the top element.
empty() – Return whether the stack is empty.Notes:
You must use only standard operations of a queue – which means only push to back, >peek/pop from front, size, and is empty operations are valid.
Depending on your language, queue may not be supported natively. You may simulate a >queue by using a list or deque (double-ended queue), as long as you use only standard >operations of a queue.
You may assume that all operations are valid (for example, no pop or top operations will be >called on an empty stack).
思路:两个队列模拟栈,入栈选不为空的queue入,出栈先把有元素的queue元素转到另一个,留一个,哪一个就是要出栈的
class Stack {queue<int> q1;queue<int> q2;
public:// Push element x onto stack.void push(int x) {if(q1.empty()){q2.push(x);}else{q1.push(x);}}// Removes the element on top of the stack.void pop() {if(q1.empty()){transElement(2);q2.pop();}else{transElement(1);q1.pop();}}// Get the top element.int top() {int result;if(q1.empty()){//q2转q1transElement(2);result = q2.front();q1.push(q2.front());q2.pop();}else{transElement(1);result = q1.front();q2.push(q1.front());q1.pop();}return result;}// Return whether the stack is empty.bool empty() {return q1.empty() && q2.empty();}//1为q1->q2,2为q2->q1void transElement(int num){if(num == 1){while(q1.size() > 1){q2.push(q1.front());q1.pop();}}else{while(q2.size() > 1){q1.push(q2.front());q2.pop();}}}};
这篇关于leetcode-225. Implement Stack using Queues的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!