我有一个抽象数据类型,可以看作是从左到右存储的列表,有以下可能的操作: Push:向列表左端添加一个新项目 Pop:删除列表左端的项目 Pull :删除列表右端的项目
使用三个堆栈和恒定的附加内存来实现这一点,以便任何推送、弹出或拉取操作的摊销时间都是恒定的。堆栈具有基本操作,isEmpty、Push 和 Pop。
摊销时间的意思是“如果我花这么多时间,我可以再花一部分时间,并将其存储在时间银行中以备后用。” 就像每次推送操作一样,花费三个常量时间块,所以对于每个推送的元素,你有 2 个额外的常量时间块。