标签:
Implement the following operations of a stack using queues.
Notes:
push to back
, peek/pop from front
, size
, and is empty
operations are valid.
思路:
基本上还是通过两个队列去实现,在实现栈的出栈操作的时候,将主队列中的元素出队至备用队列中,将队尾元素留下并弹出,再将备用队列中的元素出队至主队列中即可。而返回栈顶元素的方法大同小异,区别仅在于是否需要将队尾元素删除。
解法:
1 import java.util.Queue; 2 3 public class MyStack 4 { 5 private Queue<Integer> mainQueue; 6 private Queue<Integer> tempQueue; 7 8 public MyStack() 9 { 10 mainQueue = new LinkedList<>(); 11 tempQueue = new LinkedList<>(); 12 } 13 14 public void push(int x) 15 { mainQueue.offer(x); } 16 17 public void pop() 18 { 19 while(mainQueue.size() > 1) 20 tempQueue.offer(mainQueue.poll()); 21 mainQueue.poll(); 22 while(!tempQueue.isEmpty()) 23 mainQueue.offer(tempQueue.poll()); 24 } 25 26 public int top() 27 { 28 while(mainQueue.size() > 1) 29 tempQueue.offer(mainQueue.poll()); 30 int topValue = mainQueue.poll(); 31 tempQueue.offer(mainQueue.poll()); 32 while(!tempQueue.isEmpty()) 33 mainQueue.offer(tempQueue.poll()); 34 return topValue; 35 } 36 37 public boolean empty() 38 { return mainQueue.isEmpty(); } 39 }
LeetCode 225 Implement Stack using Queues
标签:
原文地址:http://www.cnblogs.com/wood-python/p/5839399.html