LeetCode232 Implement Queue using Stacks Java 题解

原创 2015年07月09日 12:03:51

题目:

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 toppeek/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();
    }
}



LeetCode 232: Implement Queue using Stacks

Implement the following operations of a queue using stacks. push(x) -- Push element x to the back...
  • sunao2002002
  • sunao2002002
  • 2015年07月07日 19:35
  • 4285

Stack_Queue 一个数组实现三个栈 @CareerCup

原文: Describe how you could use a single array to implement three stacks. 译文: 你如何只用一个数组实现三个栈...
  • hellobinfeng
  • hellobinfeng
  • 2014年03月01日 11:35
  • 1743

leetcode 232:Implement Queue using Stacks

leetcode 232:Implement Queue using Stacks python java c++
  • xudli
  • xudli
  • 2015年07月07日 04:48
  • 7315

Implement Queue using Stacks 用俩栈实现队列

Implement the following operations of a queue using stacks. push(x) -- Push element x to the back o...
  • chenyx90
  • chenyx90
  • 2015年12月25日 15:58
  • 132

【LeetCode-面试算法经典-Java实现】【028-Implement strStr() (实现strStr()函数)】

[【028-Implement strStr() (实现strStr()函数)】](028-Implement strStr() (实现strStr()函数))【LeetCode-面试算法经典-Jav...
  • DERRANTCM
  • DERRANTCM
  • 2015年07月25日 08:08
  • 2640

java并发编程 之 Queue的一些总结

什么是队列队列是一种特殊的线性表,它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。...
  • wuseyukui
  • wuseyukui
  • 2017年03月31日 00:09
  • 581

The C10K Problem

C10K problem, Erlang
  • nomad2
  • nomad2
  • 2010年07月03日 21:28
  • 1034

60. Implement Queue using Stacks

Implement the following operations of a queue using stacks. push(x) -- Push element x to the back o...
  • u010339647
  • u010339647
  • 2016年01月22日 21:33
  • 107

java泛型详解

学习java或者软件开发的出去编程有时候项目经理经常会问到有关泛型的理解; 泛型:是指在定义类或者接口的时候可以为类和接口指定类型形参,该类型形参在定义变量和创建对象的确定 1、定义泛型类,程序实例代...
  • hgd613
  • hgd613
  • 2013年10月12日 20:24
  • 13062

Java类集框架——LinkedList子类与Queue接口

学习目标: 掌握LinkedList与List接口的关系。 掌握Queue接口的作用。 LinkedList子类与Queue接口 LinkedList表示的是一个链表的操作类,此类的定义如下:...
  • u013087513
  • u013087513
  • 2016年08月16日 14:31
  • 1172
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:LeetCode232 Implement Queue using Stacks Java 题解
举报原因:
原因补充:

(最多只允许输入30个字)