Files
obsidian/АиСД/Задачи/LeetCode/Implement Queue using Stacks.md
T
roma-dxunvrs 4fabe16272 04.09
2026-09-04 22:55:43 +03:00

941 B

Leetcode #232 | #Easy | Очередь | Стек | Design

Идея

Два стека, один принимает все элементы. При обращении (push или peek) переносим все во второй стек, по свойствам стека во время переноса первый элемент окажется первым на выход - FIFO, что нам и надо

Big-O

  • Время O(1)
  • Память O(N)

Код

class MyQueue {
    private Deque<Integer> in = new ArrayDeque<>(), out = new ArrayDeque<>();
    public void push(int x) { in.push(x); }
    public int pop() { relocate(); return out.pop(); }
    public int peek() { relocate(); return out.peek(); }
    public boolean empty() { return in.isEmpty() && out.isEmpty(); }
    private void relocate() {
        if (out.isEmpty()) while (!in.isEmpty()) out.push(in.pop());
    }
}