powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Подскажите с решением задачи LeetCode
6 сообщений из 6, страница 1 из 1
Подскажите с решением задачи LeetCode
    #39577360
drcosmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Given a nonnegative integer number num. For every number i in the range 0 ≤ i ≤ num calculate the number of 1's in their binary representation and return them as an array.

Example:
For num = 5 you should return [0,1,1,2,1,2].

Общепринятое решение задачи:

Код: java
1.
2.
3.
4.
5.
        int[] bits = new int[num + 1];
        for (int i = 1; i <= num; i++) {
            bits[i] = bits[i >> 1] + (i & 1);
        }
        return bits;



Вопрос: почему "i >> 1" ? мы делаем сдвиг в право и как бы смотрим сколько битов было в предыдущей цифре?

но ведь тогда можно было бы просто делать bits[i - 1] и тупо брать предыдущий...

С "i&1" понятно, он сигнализирует нам о том, что в конце текущего числа стоит 1 или 0 и тут надо увеличивать/не увеличивать счетчик
...
Рейтинг: 0 / 0
Подскажите с решением задачи LeetCode
    #39577363
drcosmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drcosmo
Вопрос: почему "i >> 1" ? мы делаем сдвиг в право и как бы смотрим сколько битов было в предыдущей цифре?

но ведь тогда можно было бы просто делать bits[i - 1] и тупо брать предыдущий...



получается что тупо брать предыдущий не выйдет, поскольку число единичек не может все время расти

сам ответил на свой вопрос :)
...
Рейтинг: 0 / 0
Подскажите с решением задачи LeetCode
    #39577367
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"i >> 1" это i / 2, а не предыдущий.
...
Рейтинг: 0 / 0
Подскажите с решением задачи LeetCode
    #39577368
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drcosmo,

Обоснование - негодное
...
Рейтинг: 0 / 0
Подскажите с решением задачи LeetCode
    #39577371
drcosmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропилdrcosmo,

Обоснование - негодное

Да.

Не про предыдущее число надо говорить, а про число в двоичном представлении без самого правого бита. Именно его мы и рассматриваем при определении сколько будет битов в другом числе (не обязательно следующим за ним в десятичном представлении), только без сдвига
...
Рейтинг: 0 / 0
Подскажите с решением задачи LeetCode
    #39577384
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
drcosmo,
f(n)=f(n/2)+lowerbit(n)
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Подскажите с решением задачи LeetCode
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]