zoukankan      html  css  js  c++  java
  • [LC] 225. Implement Stack using Queues

    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.

    Example:

    MyStack stack = new MyStack();
    
    stack.push(1);
    stack.push(2);  
    stack.top();   // returns 2
    stack.pop();   // returns 2
    stack.empty(); // returns false

    class MyStack:
        
        def __init__(self):
            """
            Initialize your data structure here.
            """
            from collections import deque
            self.queue = deque()
    
        def push(self, x: int) -> None:
            """
            Push element x onto stack.
            """
            self.queue.append(x)
            for i in range(len(self.queue) - 1):
                self.queue.append(self.queue.popleft())
            
    
        def pop(self) -> int:
            """
            Removes the element on top of the stack and returns that element.
            """
            return self.queue.popleft()
    
        def top(self) -> int:
            """
            Get the top element.
            """
            return self.queue[0]
    
        def empty(self) -> bool:
            """
            Returns whether the stack is empty.
            """
            return not self.queue
    
    
    # Your MyStack object will be instantiated and called as such:
    # obj = MyStack()
    # obj.push(x)
    # param_2 = obj.pop()
    # param_3 = obj.top()
    # param_4 = obj.empty()
    class MyStack {
    
        /** Initialize your data structure here. */
        Queue<Integer> queue;
        public MyStack() {
            queue = new LinkedList<>();
        }
        
        /** Push element x onto stack. */
        public void push(int x) {
            queue.offer(x);
            for (int i = 0; i < queue.size() - 1; i++) {
                queue.offer(queue.poll());
            }
        }
        
        /** Removes the element on top of the stack and returns that element. */
        public int pop() {
            return queue.poll();
        }
        
        /** Get the top element. */
        public int top() {
            return queue.peek();
        }
        
        /** Returns whether the stack is empty. */
        public boolean empty() {
            return queue.isEmpty();
        }
    }
    
    /**
     * Your MyStack object will be instantiated and called as such:
     * MyStack obj = new MyStack();
     * obj.push(x);
     * int param_2 = obj.pop();
     * int param_3 = obj.top();
     * boolean param_4 = obj.empty();
     */
  • 相关阅读:
    Codeforces 689A Mike and Cellphone
    栈的一些基本操作
    Intersecting Lines POJ 1269
    Segments POJ 3304 直线与线段是否相交
    Toy Storage POJ 2398
    CF471D MUH and Cube Walls
    P 3396 哈希冲突 根号分治
    P1445 [Violet]樱花
    P6810 「MCOI-02」Convex Hull 凸包
    P3455 [POI2007]ZAP-Queries
  • 原文地址:https://www.cnblogs.com/xuanlu/p/11781045.html
Copyright © 2011-2022 走看看