算法导论17章提到增加栈的multi_pop方法,一次取出若干个元素。
因为总共有n个元素,所以n个连续的操作时间复杂度为n,平均下来单次的复杂度仍为O(1).
这也比较好理解,理想情况n次操作,每次取一个,等同于pop,自然是O(1).
那么每次取2个呢,前面n/2次就取完了,后面n/2次,为空,总体仍然是O(1).
然而别忙,这里关键是必须连续取n次,反之如果连续两次取完,就不会有对应结果。实际情况下,如果有push也有pop,而且是均匀分布的,就未必可行。可见这个摊还分析也是要有前提条件的。
博客探讨了算法导论中栈的multi_pop方法,指出在连续取出n个元素时,若操作均匀分布,总时间复杂度仍为O(1)。讨论了连续两次取完与随机分布操作的区别,并强调了摊还分析的前提条件。
570

被折叠的 条评论
为什么被折叠?



