У меня есть абстрактный тип данных, который можно просматривать в виде списка, хранящегося слева направо, со следующими возможными операциями:
Нажмите: добавить новый элемент в левый конец списка
Pop: удалить элемент в левом конце списка
Вытащить: удалить элемент в правом конце списка
Реализуйте это, используя три стека и постоянную дополнительную память, чтобы амортизированное время для любой операции push, pop или pull было постоянным. Стеки имеют базовые операции: isEmpty, Push и Pop.
Амортизированное время означает: «Если я потрачу это количество времени, я могу потратить еще один его блок и сохранить его в банке времени, чтобы использовать его позже» Как и для каждой операции push, тратить три блока постоянного времени, поэтому для каждого элемента push у вас есть 2 дополнительных блока постоянного времени.