• 225. Implement Stack using Queues


    原题链接:https://leetcode.com/problems/implement-stack-using-queues/description/
    实现如下:

    import java.util.LinkedList;
    import java.util.Queue;
    
    /**
     * Created by clearbug on 2018/4/3.
     *
     * 使用队列来实现一个栈,这个问题比较有意思,本身我是没有想出实现的,下面的实现是官方解答的方法一:使用两个队列来实现。然后官方方法三提供了
     * 一种更简单的使用一种队列来实现的方法,感觉真 nice。
     */
    public class MyStack {
    
        private Queue<Integer> queue1;
    
        private Queue<Integer> queue2;
    
        private int top;
    
        /** Initialize your data structure here. */
        public MyStack() {
            queue1 = new LinkedList<>();
            queue2 = new LinkedList<>();
        }
    
        /** Push element x onto stack. */
        public void push(int x) {
            top = x;
            queue1.offer(x);
        }
    
        /** Removes the element on top of the stack and returns that element. */
        public int pop() {
           while (queue1.size() > 2) {
               queue2.offer(queue1.poll());
           }
           int oldTop = -1;
           if (queue1.size() == 2) {
               top = queue1.poll();
               queue2.offer(top);
    
               oldTop = queue1.poll();
           } else {
               oldTop = queue1.poll();
           }
    
    
           Queue<Integer> temp = queue1;
           queue1 = queue2;
           queue2 = temp;
    
           return oldTop;
        }
    
        /** Get the top element. */
        public int top() {
            return top;
        }
    
        /** Returns whether the stack is empty. */
        public boolean empty() {
            return queue1.isEmpty();
        }
    
    }
    
  • 相关阅读:
    最长上升子序列问题总结
    Problem C
    Problem C
    Problem P
    Problem P
    Problem H
    Problem H
    Problem D
    Problem D
    Linux系统调用--getrlimit()与setrlimit()函数详解
  • 原文地址:https://www.cnblogs.com/optor/p/8710691.html
Copyright © 2020-2023  润新知