我有一个抽象数据类型,可以被视为从左到右存储的列表,具有以下可能的操作:
Push:将新项目添加到列表的左端
Pop:删除列表左端的项目
Pull:删除列表右端的项目
使用三个堆栈和恒定的额外内存来实现此操作,以使任何push,pop或pull操作的平摊时间是恒定的。这些堆栈具有基本操作isEmpty,Push和Pop。
平摊时间意味着“如果我花费了这么多时间,我可以再花费一段时间并将其存储在时间银行中以供以后使用。”例如,对于每个push操作,花费三个常数时间块,因此对于每个推送的元素,您有2个额外的常数时间块。
使用三个堆栈和恒定的额外内存来实现此操作,以使任何push,pop或pull操作的平摊时间是恒定的。这些堆栈具有基本操作isEmpty,Push和Pop。
平摊时间意味着“如果我花费了这么多时间,我可以再花费一段时间并将其存储在时间银行中以供以后使用。”例如,对于每个push操作,花费三个常数时间块,因此对于每个推送的元素,您有2个额外的常数时间块。