232.用栈实现队列
- 用int top帮助保存peek,但top不一定是peek
- push O(1), pop Amortized O(1)
- Amortized O(1) 因为 In the example above, the number of times pop operation can be called is limited by the number of push operations before it. Although a single pop operation could be expensive, it is expensive only once per
n
times (queue size), when s2
is empty and there is a need for data transfer between s1
and s2
. Hence the total time complexity of the sequence is : n
(for push operations) + 2*n
(for first pop operation) + n - 1
( for pop operations) which is O(2∗n)O(2*n)O(2∗n).This gives O(2n/2n)O(2n/2n)O(2n/2n) = O(1)O(1)O(1) average time per operation.
225. 用队列实现栈
- 用一个Queue, push O(n), pop O(1)
- 每次push都把新元素放到最前面,模仿stack的进栈
public void push(int x) {
q.add(x);
int size = q.size();
while(size > 1) {
q.add(q.poll());
size--;
}
}