leetcode 225:Implement Stack using Queues

原创 2015年07月08日 12:56:37

题目:
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 empty operations 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).

分析:
本题是要用队列实现栈的相关操作,可以用两个队列来实现栈的四个操作,设定始终保证一个队列为空,两个队列分别为q1,q2:
1、push(x):
若q1非空,则x加入到q2中,然后将q1元素放入到q2中;若q2非空,则x加入到q1中,然后将q2元素放入到q1中.
2、pop():
若q1非空,则q1执行队列poll()操作;若q2非空,则q2执行队列poll()操作.
3、top():
若q1非空,则q1执行队列peek()操作;若q2非空,则q2执行队列peek()操作.
4、empty():
若队列q1和q2都为空,则返回true.
代码:

import java.util.ArrayDeque;
import java.util.Queue;
public class MyStack {
    Queue<Integer> q1=new ArrayDeque<Integer>(); ;
    Queue<Integer> q2=new ArrayDeque<Integer>();
    // Push element x onto stack.
    public void push(int x) {
        if(q1.isEmpty()){
            q1.offer(x);
            while(!q2.isEmpty()){
                int tmp=q2.peek();
                q2.poll();
                q1.offer(tmp);
            }
        }else{
            q2.offer(x);
            while(!q1.isEmpty()){
                int tmp=q1.peek();
                q1.poll();
                q2.offer(tmp);
            }
        }
    }

    // Removes the element on top of the stack.
    public void pop() {
       if(!q1.isEmpty())
           q1.poll();
       if(!q2.isEmpty())
           q2.poll();
    }

    // Get the top element.
    public int top() {
        if(!q1.isEmpty())
            return q1.peek();
        if(!q2.isEmpty())
            return q2.peek();
        return 0;
    }

    // Return whether the stack is empty.
    public boolean empty() {
        return q1.isEmpty()&&q2.isEmpty();
    }
    public static void main(String[] args){
        MyStack stack=new MyStack();
        boolean result=stack.empty();
        System.out.println("empty:"+result);
    }
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

LeetCode 225: Implement Stack using Queues

Implement the following operations of a stack using queues. push(x) -- Push element x onto stack....
  • sunao2002002
  • sunao2002002
  • 2015年06月13日 14:58
  • 5312

leetcode 225: Implement Stack using Queues

leetcode 225: Implement Stack using Queues python java c++
  • xudli
  • xudli
  • 2015年06月19日 01:00
  • 4429

LeetCode225:Implement Stack using Queues

Implement the following operations of a stack using queues.push(x) – Push element x onto stack. pop...
  • u012501459
  • u012501459
  • 2015年07月10日 22:46
  • 770

【LeetCode】Implement Stack using Queues 解题报告

【题目】 Implement the following operations of a stack using queues. push(x) -- Push element x o...
  • ljiabin
  • ljiabin
  • 2015年06月14日 10:35
  • 8805

[LeetCode-225] Implement Stack using Queues(两个队列实现栈)

Implement the following operations of a stack using queues. push(x) -- Push element x onto stack....
  • xy010902100449
  • xy010902100449
  • 2015年10月21日 18:07
  • 529

232. Implement Queue using Stacks [easy] (Python)

题目链接https://leetcode.com/problems/implement-queue-using-stacks/题目原文 Implement the following operat...
  • coder_orz
  • coder_orz
  • 2016年06月04日 23:32
  • 1073

LeetCode232 Implement Queue using Stacks Java 题解

题目: Implement the following operations of a queue using stacks. push(x) -- Push element x to...
  • u012249528
  • u012249528
  • 2015年07月09日 12:03
  • 2160

225 Implement Stack using Queues

class MyStack { Queue queue = new LinkedList(); Queue tmp = new LinkedList();     // Push element...
  • gyn18744026959
  • gyn18744026959
  • 2015年07月22日 15:21
  • 198

[225]Implement Stack using Queues

【题目描述】 Implement the following operations of a stack using queues. push(x) -- Push element x onto...
  • sadjuno
  • sadjuno
  • 2015年10月07日 08:52
  • 64

Leetcode 225 Implement Stack using Queues

Implement the following operations of a stack using queues. push(x) -- Push element x onto stack....
  • pessis1
  • pessis1
  • 2016年12月15日 19:25
  • 61
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:leetcode 225:Implement Stack using Queues
举报原因:
原因补充:

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