Идея состоит в том, чтобы отложить операцию максимального количества счетчиков до конца. Как вы могли заметить, значение счетчика никогда не используется без предварительного вычисления max с помощью B
, а B
- это то, что максимальное значение (maxUpdate
) было в последний раз, когда N+1
было найдено в A
. ,maxUpdate
всегда содержит максимальное значение в массиве счетчиков: оно начинается с нуля, как и все счетчики, и каждый раз, когда счетчик увеличивается, maxUpdate
обновляется.