【发布时间】:2010-10-12 02:26:38
【问题描述】:
我有一个抽象数据类型,可以将其视为从左到右存储的列表,具有以下可能的操作: Push:在列表的左端添加一个新项目 pop:移除列表左端的项目 拉取:移除列表右端的项目
使用三个堆栈和恒定的附加内存来实现这一点,以便任何推送、弹出或拉取操作的摊销时间都是恒定的。堆栈具有基本操作,isEmpty、Push 和 Pop。
摊销时间的意思是“如果我花费了这么多时间,我可以再花费一部分时间并将其存储在时间银行中以备后用。”就像每次推送操作一样,花费三个常量时间块,所以对于每个推送的元素,您有 2 个额外的常量时间块。
【问题讨论】:
-
显然,但我想没关系,这是一个有趣的问题,我想听听解决方案。
-
家庭作业与否影响回答方式。作业指导思想,不要只发代码,不是吗?
-
我对待家庭作业的问题和非一样。也就是说,这个问题实际上是一个指令“做我的功课”,没有任何迹象表明 OP a)理解问题,b)想要理解问题,或 c)关心从任务中学习任何东西。这并不能满足回答。
标签: algorithm stack amortized-analysis