225.Implement Stack using Queues (用队列实现栈)
2015-07-28 15:14
531 查看
题目:
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
and
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)
代码:
方法一:使用两个队列
class MyStack {
// Push element x onto stack.
Queue<Integer> queue = new LinkedList<Integer>();
Queue<Integer> temp = new LinkedList<Integer>();
// Use two queue.
public void push(int x) {
while(!queue.isEmpty()){
temp.add(queue.poll());
}
queue.add(x);
while(!temp.isEmpty()){
queue.add(temp.poll());
}
}
// Removes the element on top of the stack.
public void pop() {
queue.poll();
}
// Get the top element.
public int top() {
return queue.peek();
}
// Return whether the stack is empty.
public boolean empty() {
return queue.isEmpty();
}
}
方法二:只用一个queue(先push进去,然后把前面的数以此取出,再放入队列);
public void push(int x) {
queue.add(x);
int len = queue.size()-1;
while(len>0){
queue.add(queue.poll());
len-- ;
}
}
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 emptyoperations 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)
代码:
方法一:使用两个队列
class MyStack {
// Push element x onto stack.
Queue<Integer> queue = new LinkedList<Integer>();
Queue<Integer> temp = new LinkedList<Integer>();
// Use two queue.
public void push(int x) {
while(!queue.isEmpty()){
temp.add(queue.poll());
}
queue.add(x);
while(!temp.isEmpty()){
queue.add(temp.poll());
}
}
// Removes the element on top of the stack.
public void pop() {
queue.poll();
}
// Get the top element.
public int top() {
return queue.peek();
}
// Return whether the stack is empty.
public boolean empty() {
return queue.isEmpty();
}
}
方法二:只用一个queue(先push进去,然后把前面的数以此取出,再放入队列);
public void push(int x) {
queue.add(x);
int len = queue.size()-1;
while(len>0){
queue.add(queue.poll());
len-- ;
}
}
相关文章推荐
- iOS总结控件三(UItextField)
- 在 UITabBarController 和 UINavigationController tableView被navigati
- iOS阶段学习第26天笔记(UILabel的介绍)
- Fragment 中嵌套Fragment,更新数据,UI
- leetcode 063 —— Unique Paths II
- UVA 540 Team Queue
- UIBarButtonItem类目-返回一个有图片的导航栏按钮
- IOS8 UITableViewCell线填充方法 不显示多余cell分割线
- HDU 1509 Windows Message Queue
- RegQueryValueEx函数不能获取到键值?
- hdoj 1509 Windows Message Queue【优先队列】
- android常用UI使用案例:ImageSwitcher和Gallery
- 【kmp】hdu1171 Number Sequence
- leetcode 062 —— Unique Paths
- android常用UI使用案例:SeekBar
- FineUI初学手册-部分JS整理
- UITableiView
- hdoj 1509 Windows Message Queue 【STL 优先队列】
- UICollectionView中cell的border问题
- 232.Implement Queue using Stacks(用栈实现队列)