• LeetCode 225. Implement Stack using Queues


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

    题目

    链接

    https://leetcode-cn.com/problems/implement-stack-using-queues/

    问题描述

    请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(push、top、pop 和 empty)。

    实现 MyStack 类:

    void push(int x) 将元素 x 压入栈顶。
    int pop() 移除并返回栈顶元素。
    int top() 返回栈顶元素。
    boolean empty() 如果栈是空的,返回 true ;否则,返回 false 。

    注意:

    你只能使用队列的基本操作 —— 也就是 push to back、peek/pop from front、size 和 is empty 这些操作。
    你所使用的语言也许不支持队列。 你可以使用 list (列表)或者 deque(双端队列)来模拟一个队列 , 只要是标准的队列操作即可。

    示例

    输入:
    ["MyStack", "push", "push", "top", "pop", "empty"]
    [[], [1], [2], [], [], []]
    输出:
    [null, null, null, 2, 2, false]

    解释:
    MyStack myStack = new MyStack();
    myStack.push(1);
    myStack.push(2);
    myStack.top(); // 返回 2
    myStack.pop(); // 返回 2
    myStack.empty(); // 返回 False

    提示

    1 <= x <= 9
    最多调用100 次 push、pop、top 和 empty
    每次调用 pop 和 top 都保证栈不为空

    思路

    复杂度分析

    时间复杂度 O(n)
    空间复杂度 O(1)
    

    代码

    Java

            Queue<Integer> q1;
            Queue<Integer> q2;
    
            public void MyStack() {
                q1 = new LinkedList<Integer>();
                q2 = new LinkedList<Integer>();
            }
    
            public void push(int x) {
                q2.offer(x);
                while (!q1.isEmpty()) {
                    q2.offer(q1.poll());
                }
                Queue<Integer> temp = q1;
                q1 = q2;
                q2 = temp;
            }
    
            public int pop() {
                return q1.poll();
            }
    
            public int top() {
                return q1.peek();
            }
    
            public boolean empty() {
                return q1.isEmpty();
            }
    
    
  • 相关阅读:
    [leedcode 155] Min Stack
    [leedcode 154] Find Minimum in Rotated Sorted Array II
    [leedcode 153] Find Minimum in Rotated Sorted Array
    [leedcode 151] Reverse Words in a String
    [leedcode 150] Evaluate Reverse Polish Notation
    [leedcode 149] Max Points on a Line
    maven记录
    intelij idea常用功能介绍
    intelij idea设置和使用git
    intelij idea模板
  • 原文地址:https://www.cnblogs.com/blogxjc/p/16054046.html
Copyright © 2020-2023  润新知