第10天 Stack and Queue 232、225

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--;
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值