题目:

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 topsize,
    and is emptyoperations 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).

解题:

用栈实现队列,这个比用队列实现栈要麻烦一些,这里用到两个栈,两种思路。第一种就是在进栈的时候,把栈逆序放在另外一个栈,出的时候直接出另外一个栈就能够了。另外一种思路。进栈的时候不做不论什么处理。出栈的时候把栈逆序放在另外一个栈。出另外一个栈。以下就是两种的代码实现。

在进栈的时候进行处理:

class MyQueue {
// Push element x to the back of queue.
Stack<Integer> stack=new Stack<>();
Stack<Integer> stack2=new Stack<>(); public void push(int x) {
while(!stack.isEmpty())
{
stack2.push(stack.pop());
}
stack2.push(x);
while(!stack2.isEmpty())
{
stack.push(stack2.pop());
} } // Removes the element from in front of queue.
public void pop() {
stack.pop();
} // Get the front element.
public int peek() {
return stack.peek();
} // Return whether the queue is empty.
public boolean empty() {
return stack.isEmpty();
}
}

在出栈的时候进行处理:

class MyQueue2 {
// Push element x to the back of queue.
Stack<Integer> stack=new Stack<>();
Stack<Integer> stack2=new Stack<>(); public void push(int x) {
while(!stack2.isEmpty())
stack.push(stack2.pop());
stack.push(x); } // Removes the element from in front of queue.
public void pop() { while(!stack.isEmpty())
stack2.push(stack.pop());
stack2.pop(); } // Get the front element.
public int peek() {
while(!stack.isEmpty())
stack2.push(stack.pop());
return stack2.peek(); } // Return whether the queue is empty.
public boolean empty() {
while(!stack2.isEmpty())
stack.push(stack2.pop());
return stack.isEmpty();
}
}

最新文章

  1. mui,css3 querySelector,appendChild,style.display,insertBefore
  2. hadoop运行原理之Job运行(四) JobTracker端心跳机制分析
  3. CSAPP学习笔记(异常控制流1)
  4. 必须知道的八大种排序算法【java实现】(三) 归并排序算法、堆排序算法详解
  5. python输出1到100之和的几种方法
  6. 方法覆盖(override)”的要点
  7. C++ 堆 和 堆 分析
  8. 关于Java 实现抽象类的抽象方法的特性的利用---面向切面
  9. leetcode(js)算法之914卡牌分组
  10. Linux下用gSOAP开发Web Service服务端和客户端程序
  11. 接口调用,输出结果为Json格式(ConvertTo-Json),提交参数给URL(WebRequest)
  12. mysql与redis的区别与联系
  13. JS阻止冒泡方法(转)
  14. LVM的创建与管理
  15. DBArtist之Oracle入门第3步: 安装配置PL/SQL Developer
  16. vue+element-ui中的图片获取与上传
  17. DAY2敏捷冲刺
  18. OpenCV2.3.1在Win7+VS2010下的配置过程
  19. Springboot读取配置文件的两种方法
  20. logback.xml

热门文章

  1. PYDay7&amp;8-递归、冒泡算法、装饰器
  2. 图论trainning-part-1 F. Highways
  3. input加border-raduis之后再加border有阴影
  4. Spring Boot SpringSecurity5 身份验证
  5. JSP表单提交中文乱码
  6. 页面中用Context.Handler传递
  7. [NOIP2009] 提高组 洛谷P1072 Hankson 的趣味题
  8. SPFA的两个(卡时)优化
  9. Codeforces 667D World Tour【最短路+枚举】
  10. P1339 热浪Heat Wave 洛谷