Implement Queue using Stacks
2015-07-24 11:13
651 查看
push(x) -- Push element x to the back of queue.
pop() -- Removes the element from in front of queue.
peek() -- Get the front element.
empty() -- Return whether the queue is empty.
Notes:
You must use only standard operations of a stack -- which means only
push to top,
peek/pop from top,
size,
and
is empty
operations are valid.
Depending on your language, stack may not be supported natively. You may simulate a stack by using a list or deque (double-ended queue),
as long as you use only standard operations of a stack.
You may assume that all operations are valid (for example, no pop or peek operations will be called on an empty queue).
Show Tags
Show Similar Problems
Have you met this question in a real interview
既然仍然可以用list模拟,先给出用list模拟的,再给出用stack模拟的。
代码如下:
list模拟队列
class MyQueue { List<Integer> queue = new ArrayList<Integer>(); // Push element x to the back of queue. public void push(int x) { queue.add(x); } // Removes the element from in front of queue. public void pop() { if(!empty()) queue.remove(queue.get(0)); } // Get the front element. public int peek() { return queue.get(0); } // Return whether the queue is empty. public boolean empty() { return queue.size()==0;//return queue.isEmpty()也行 } }
2个stack模拟队列如下:
class MyQueue { Stack<Integer> s1 = new Stack<>(); Stack<Integer> s2 = new Stack<>(); // Push element x to the back of queue. public void push(int x) { s1.add(x); } // Removes the element from in front of queue. public void pop() { if(!s2.isEmpty()){ s2.pop(); }else{ while(!s1.isEmpty()){ s2.push(s1.pop()); } s2.pop();//pop()有返回值,但是这里不接收即可,满足方法void的要求 } } // Get the front element. public int peek() { if(!s2.isEmpty()){ return s2.peek(); }else{ while(!s1.isEmpty()){ s2.push(s1.pop()); } return s2.peek(); } } // Return whether the queue is empty. public boolean empty() { return s1.isEmpty()&&s2.isEmpty() ; } }
相关文章推荐
- gulp插件(gulp-jmbuild),用于WEB前端构建
- Android高仿QQ v4.7.0全新UI
- 从客户端中检测到有潜在危险的 Request.Form 值
- emulator: ERROR: x86 emulation currently requires hardware acceleration!Please ensure Intel HAXM is
- uilabel自适应高度
- UIPageControl 属性
- IOS开发-UI基础-视图
- UIScrollView常用方法
- UIScrollView属性
- iOS 中UISlider常用知识点
- [LeetCode][Java] Distinct Subsequences
- iOS中UISegmentedControl常用属性
- 宏碁宣布Liquid Jade智能机和Leap袖口
- UIView之userInteractionEnabled属性介绍
- UICollectionView基础
- leetcode-动态规划:Unique Binary Search Trees
- mysql对xml提供支持的两个函数extractvalue updatexml
- hdu 5301 Buildings
- UISegmentedControl和UIPickerView
- iOS UITextView内容添加后,自动滚动到最后一行