LeetCode--225. Implement Stack using Queues(用队列实现栈)
问题大意
使用用队列来模拟栈的操作。
- push(x) 将元素x入栈。
- pop() 出栈。
- top() 获取栈顶元素。
- empty() 判断是否为空。
注意:只能用队列的标准操作,队头取元素,队尾插入元素,获取队列的大小,以及队列是否为空。
方法:使用一个队列来模拟栈
入栈=直接入队列
出栈=将队列前n-1个元素出队后插到队尾,然后头元素出队
获取栈顶=将队列前n-1个元素出队后插到队尾,然后获取头元素t,将头元素出队后插到队尾,返回t。
判空=队列判空
代码:
class MyStack { Queue<Integer> queue = new LinkedList<Integer>(); // Push element x onto stack. public void push(int x) { queue.add(x); } // Removes the element on top of the stack. public void pop() { int num = queue.size(); for(int i = 0 ; i < num-1 ; i++){ queue.add(queue.poll()); } queue.poll(); } // Get the top element. public int top() { int num = queue.size(); for(int i = 0 ; i < num-1 ; i++) queue.add(queue.poll()); int solu = queue.poll(); queue.add(solu); return solu; } // Return whether the stack is empty. public boolean empty() { return queue.isEmpty(); } }

浙公网安备 33010602011771号