Код Middle Массивы и хеш-таблицы обновлено

Счастливое число

Условие

Число счастливое, если повторное возведение его цифр в квадрат и суммирование в итоге даёт 1. Если процесс зациклился - число несчастливое.

Примеры

isHappy(19) // true
isHappy(2) // false
isHappy(1) // true

Как подойти

Ключевое наблюдение: последовательность обязана либо прийти к единице, либо войти в цикл, потому что суммы квадратов цифр ограничены сверху. Отсюда Set посещённых как условие выхода. Альтернатива без памяти - алгоритм Флойда с быстрым и медленным указателем, применённый к этой последовательности; назвать его стоит.

Подсказки: 3
  1. Процесс либо доходит до единицы, либо зацикливается - третьего нет.
  2. Зацикливание ловится множеством уже виденных чисел.
  3. Умножение строки на строку в JS сработает, но полагаться на это не стоит.

Решите в тренажёре

Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.