Таємниця, яку він не повинен дізнатися.

Він не повинен знати.
Олена стояла біля під’їзду старої п’ятиповерхівки й не могла наважитися натиснути кнопку домофона. У кишені пальта лежала зім’ята папірка з адресою, яку вона дізналася через спільних знайомих. Дванадцять років… Цілих дванадцять років минуло з того дня, коли вона залишила своєї новонародженого сина.

— Що ти робиш? — прошепотіла вона сама до себе. — Думаєш, тебе там чекають з розпростертими обіймами?

Але ноги наче приросли до асфальту. Піти вона не могла, як і увійти. У голові крутилися спогади про той страшний день, коли вона, двадцятидворічна дурниця, піддалася емоціям і накоїла дурниць, про які потім шкодувала все життя.

�# Implement a Queue using two Stacks.

Implement the following operations of a queue using stacks.

– push(x) — Push element x to the back of queue.
– pop() — Removes the element from in front of queue.
– peek() — Get the front element.
– empty() — Return whether the queue is empty.

Example:
“`
MyQueue queue = new MyQueue();

queue.push(1);
queue.push(2);
queue.peek(); // returns 1
queue.pop(); // returns 1
queue.empty(); // returns false
“`

Notes:

– You must use only standard operations of a stack — which means only push to top, peek/pop from top, size, and is empty operations are valid.
– Depending on your language, stack may not be supported natively. You may simulate a stack by using a list or deque (double-ended queue), as long as you use only standard operations of a stack.
– You may assume that all operations are valid (for example, no pop or peek operations will be called on an empty queue).

## Solution:
* 利用兩個 stack 來模擬 queue 的操作
* stack1 負責 push 操作
* stack2 負責 pop 和 peek 操作
* 當 stack2 為空時,我們把 stack1 的元素全部倒進 stack2,這樣 stack2 的 top 就是 queue 的 front
* 這樣可以保證 stack2 的元素順序是 queue 的順序
* 時間複雜度:
* push: O(1)
* pop: O(1) amortized (因為我們不需要每次都倒 stack1 進 stack2)
* peek: O(1) amortized
* empty: O(1)
* 空間複雜度: O(n)

## Code:
* [Python](./queue_using_stacks.py)
* [C++](./queue_using_stacks.cpp)
* [Javascript](./queue_using_stacks.js)

Оцініть статтю
ZigZag
Таємниця, яку він не повинен дізнатися.