Моя попытка:
мы сохраняем агрегацию по последовательному 1
или 0
.
означает 111000111 является < 1,0> < 3,1> < 3,0> < 3,1>
Я могу представить это следующим DS:
Список Node {разряд: bool, counter: long}
1) если первый объем составляет 1. он превращается в большую часть 0 `s и поворачивается на следующее 0 до 1.
Теперь мы проверяем, можем ли мы объединить объёмы 1-го.
2) если первая масса равна 0, мы делаем первую цифру 1. и видим, можем ли мы объединить 1.
Пример А:
означает 111000111 является < 1,0> < 3,1> < 3,0> < 3,1>
чтение: три 1
цифры, три цифры 0
, три 1
цифры, одна 0
цифры
приращение()
< 1,0> < 3,1> < 2,0> < 1,1> < 3,0>
Пример Б:
< 1,0> < 3,1> < 1,0> < 3,1 >
приращение()
< 1,0> < 3,1> < 1,1> < 3,0>
Aggregat иона:
< 1,0> < 4,1> < 3,0>
Там всегда будет сопз количество изменений (до самого правого 0 цифр)
и Turnning массы 1
s просто переводит булев элемент. который является постоянным
Что такое бесконечный двоичный счетчик? – Oded
* sniff sniff * ... Я обнаруживаю, что у меня есть домашние задания ... –
что? приращение всегда имеет O (1), в чем вопрос? –