部分文章内容为公开资料查询整理,原文出处可能未标注,如有侵权,请联系我,谢谢。邮箱地址:gnivor@163.com ►►►需要气球么?请点击我吧!

LeetCode--225. Implement Stack using Queues(用队列实现栈)

问题大意

使用用队列来模拟栈的操作。

  • push(x) 将元素x入栈。
  • pop() 出栈。
  • top() 获取栈顶元素。
  • empty() 判断是否为空。

注意:只能用队列的标准操作,队头取元素,队尾插入元素,获取队列的大小,以及队列是否为空。

方法:使用一个队列来模拟栈

入栈=直接入队列
出栈=将队列前n-1个元素出队后插到队尾,然后头元素出队
获取栈顶=将队列前n-1个元素出队后插到队尾,然后获取头元素t,将头元素出队后插到队尾,返回t。
判空=队列判空

代码:

class MyStack {
    
    Queue<Integer> queue = new LinkedList<Integer>();
    // Push element x onto stack.
    public void push(int x) {
        queue.add(x);
    }

    // Removes the element on top of the stack.
    public void pop() {
        int num = queue.size();
        for(int i = 0 ; i < num-1 ; i++){
            queue.add(queue.poll());
        }
        queue.poll();
    }

    // Get the top element.
    public int top() {
        int num = queue.size();
        for(int i = 0 ; i < num-1 ; i++)
            queue.add(queue.poll());
        
        int solu = queue.poll();
        queue.add(solu);
        return solu;
    }

    // Return whether the stack is empty.
    public boolean empty() {
        return queue.isEmpty();
    }
}

 

posted @ 2015-07-20 15:40  流了个火  阅读(142)  评论(0)    收藏  举报
►►►需要气球么?请点击我吧!►►►
View My Stats