LeetCode(23)-Implement Queue using Stacks(栈实现队列)
2016-04-05 15:42
726 查看
题目:
Implement the following operations of a queue using stacks. 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).
思路:
这道题的意思是用堆栈(stack)来实现队列(quene)可以用两个stack,s1和s2来实现,s1用来整体的存储,s2用来缓冲倒叙,首先判断s2是否为空,为空,把s1弹出到s2,否则s2.pop()
代码:
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.push(x); } // Removes the element from in front of queue. public void pop() { if(!s2.isEmpty()){ s2.pop(); }else{ if(s1.isEmpty()){ return; }else{ while(!s1.isEmpty()){ int tmp = s1.pop(); s2.push(tmp); } s2.pop(); } } } // Get the front element. public int peek() { if(!s2.isEmpty()){ return s2.peek(); }else{ if(s1.isEmpty()){ return -1; }else{ while(!s1.isEmpty()){ int tmp = s1.pop(); s2.push(tmp); } return s2.peek(); } } } // Return whether the queue is empty. public boolean empty() { return(s1.isEmpty() && s2.isEmpty()); } }
帮朋友招聘职位如下
普照天星【Java开发工程师】20-30khttp://www.jianshu.com/p/8b52751360df
产品经理20-30k
http://www.jianshu.com/p/cb0ac7a00796
我的微信二维码如下
微信订阅号二维码如下:
相关文章推荐
- 只有程序员看的懂的面试圣经|如何拿下编程面试
- 下一次技术面试时要问的 3 个重要问题
- 书评:《算法之美( Algorithms to Live By )》
- 动易2006序列号破解算法公布
- Ruby实现的矩阵连乘算法
- C#插入法排序算法实例分析
- PHP程序员面试 切忌急功近利(更需要注重以后的发展)
- 超大数据量存储常用数据库分表分库算法总结
- C#数据结构与算法揭秘二
- C#冒泡法排序算法实例分析
- 算法练习之从String.indexOf的模拟实现开始
- C#算法之关于大牛生小牛的问题
- C#实现的算24点游戏算法实例分析
- c语言实现的带通配符匹配算法
- 浅析STL中的常用算法
- 算法之排列算法与组合算法详解
- C++实现一维向量旋转算法
- Ruby实现的合并排序算法
- C#折半插入排序算法实现方法
- 基于C++实现的各种内部排序算法汇总