Files
obsidian/АиСД/Задачи/LeetCode/Implement Queue using Stacks.md
T
roma-dxunvrs 0e6e583e6d
deploy / Pull and Restart (push) Successful in 17s
refactor: wiki links -> md links
2026-09-22 08:52:23 +03:00

19 lines
1.0 KiB
Markdown

Leetcode #232 | #Easy | [Очередь](../../Структуры/Очередь.md) | [Стек](../../Структуры/Стек.md) | [Design](../../Design/Design.md)
## Идея
Два стека, один принимает все элементы. При обращении (push или peek) переносим все во второй стек, по свойствам стека во время переноса первый элемент окажется первым на выход - FIFO, что нам и надо
## Big-O
- Время ```O(1)```
- Память ```O(N)```
## Код
```Java
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());
}
}
```