美文网首页
算法|232. 用栈实现队列、 用队列实现栈

算法|232. 用栈实现队列、 用队列实现栈

作者: 激扬飞雪 | 来源:发表于2022-11-24 21:16 被阅读0次

一、232. 用栈实现队列

题目链接:https://leetcode.cn/problems/implement-queue-using-stacks/
思路:使用两个栈,一个输入栈input,一个输出栈output,
          push:往input.push()元素
          peek:在output.peek()元素,在执行前检查outpush是否为空 ,为空则input pop出push output中
        pop:在output.pop()元素,在执行前检查outpush是否为空 ,为空则input pop出push output中
        empty:判断input.isEmpty() && outpush.isEmpty();

class MyQueue {
    private Stack<Integer> input;
    private Stack<Integer> output;
    public MyQueue() {
        input = new Stack<>();
        output = new Stack<>();
    }
    
    public void push(int x) {
        input.push(x);
    }

    private void check() {
        if (output.isEmpty()) {
            while (!input.isEmpty()) {
                output.push(input.pop());
            }
        }
    }
    
    public int pop() {
        check();
        return output.pop();
    }
    
    public int peek() {
        check();
        return output.peek();
    }
    
    
    public boolean empty() {
        return input.isEmpty() && output.isEmpty();
    }
}

/**
 * Your MyQueue object will be instantiated and called as such:
 * MyQueue obj = new MyQueue();
 * obj.push(x);
 * int param_2 = obj.pop();
 * int param_3 = obj.peek();
 * boolean param_4 = obj.empty();
 */

二、 225. 用队列实现栈

题目链接:https://leetcode.cn/problems/implement-stack-using-queues/
思路:使用一个队列实现,
push:记录size 往队列中添加元素, 将size个元素offer到队列中去
pop:队列poll();
top:队列peek();
empty:判断队列是否为空isEmpty();

class MyStack {
    private Queue<Integer> queue;
    public MyStack() {
        queue = new LinkedList<>();
    }
    
    public void push(int x) {
        int size = queue.size();
        queue.offer(x);
        while (size-- > 0) {
            queue.offer(queue.poll());
        }
    }
    
    public int pop() {
        return queue.poll();
    }
    
    public int top() {
        return queue.peek();
    }
    
    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();
 */

相关文章

  • C语言第七次作业:链表

    707. 设计链表 空指针 空节点 225. 用队列实现栈 链式存储栈 双队列实现栈 232. 用栈实现队列 链式...

  • 数据结构——栈和队列

    用数组实现栈和队列 用栈实现队列 用队列实现栈 栈和队列的经典算法题最小间距栈宠物收养所 数组实现栈和队列 用数组...

  • 算法分析 [BFS、Greedy贪心] 2019-02-18

    队列 和 栈 232. 用栈实现队列 Implement Queue using Stacks双栈,出队列时,将i...

  • leetcode 232 栈实现队列

    232. 用栈实现队列 使用栈实现队列的下列操作: push(x) -- 将一个元素放入队列的尾部。 pop() ...

  • 队列之-队列实现栈

    一、队列实现栈核心算法概述 之前已经描述过了用栈实现队列的功能,见栈系列之-实现队列,那么同样队列也可以用来实现栈...

  • 3.算法- 用栈实现队列

    232.用栈实现队列 https://leetcode-cn.com/problems/implement-que...

  • 2021.3.5每日一题

    232. 用栈实现队列[https://leetcode-cn.com/problems/implement-qu...

  • 队列、栈转化

    [TOC] 232. 用栈实现队列[https://leetcode-cn.com/problems/implem...

  • leecode刷题(26)-- 用栈实现队列

    leecode刷题(26)-- 用栈实现队列 用栈实现队列 使用栈实现队列的下列操作: push(x) -- 将一...

  • 38_两个有趣的问题

    关键词:通过栈实现队列、通过队列实现栈 0. 通过栈实现队列 用栈实现队列等价于用后进先出的特性实现先进先出的特性...

网友评论

      本文标题:算法|232. 用栈实现队列、 用队列实现栈

      本文链接:https://www.haomeiwen.com/subject/gmbxfdtx.html