O(n) Java Solution


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

    }


  • 0
    L

    why that can not pass if the type of s1 and s2 is public static?

    public static Stack<Integer> s1 = new Stack<Integer>();
    public static Stack<Integer> s2 = new Stack<Integer>();


  • 0

    Because static means that the same stacks will be used for multiple test cases without resetting them in between.


  • 0
    C

    Nice reply, static means no matter how many instances you've made, you are using the same stack.


Log in to reply
 

Looks like your connection to LeetCode Discuss was lost, please wait while we try to reconnect.