LeetCode Solutions (161 серия деталей)
Это является частью серии объяснений решения LeetCode ( index ). Если вам понравилось это решение или нашли его полезным, Пожалуйста, нравится Этот пост и/или upvote Мое решение по сообщению на форумах LeetCode Анкет
Проблема LeetCode #970 (средняя): Мощные целые числа
Описание:
( прыгнуть в : Идея решения Код : JavaScript | Python | Java | C ++
Учитывают три целых числа x
, y
и Связанный
В вернуть список всех Мощные целые числа которые имеют значение меньше или равны Связанный
Анкет
Целое число – это мощный Если это может быть представлено как xi + yj
для некоторых целых чисел i
и J
Анкет
Вы можете вернуть ответ в любом порядке. В вашем ответе каждое значение должно происходить максимум раз Анкет
Примеры:
Вход: | |
Выход: | [2,3,4,5,7,9,10] |
Объяснение: |
Вход: | |
Выход: | [2,4,6,8,10,14] |
Ограничения:
- 1, y
- 0^6
Идея:
( Прыгните к : Описание задачи Код : JavaScript | Python | Java | C ++
Эта проблема довольно простая. Поскольку нам нужно вернуть все мощные целые числа, а не просто их количество, мы не так много ярлыков, которые мы можем взять; Нам придется на самом деле придумать решение итеративно с вложенными петлями.
Во -первых, мы можем использовать установить Структура ( и ), чтобы предотвратить дубликаты ответов. Тогда мы можем иметь наши вложенные петли увеличения силы x и y Значения при добавлении соответствующих результатов в наш набор.
Одна несколько сложная ситуация возникает, когда одна или несколько значений – это 1 , как эта сила будет продолжать быть 1 навсегда, независимо от показателя. Чтобы справиться с этим, мы можем заставить каждую вложенную петлю к перерыв После первой итерации, если его первоначальное значение было 1 Анкет
После того, как мы переживаем все возможные комбинации, мы можем преобразовать Анс к массиву и возврат Это.
Реализация:
Есть только незначительные различия в коде каждого языка.
Код JavaScript:
( Прыгните к : Описание задачи Идея решения
var powerfulIntegers = function(x, y, bound) { let ans = new Set() for (let xi = 1; xi < bound; xi *= x) { for (let yj = 1; xi + yj <= bound; yj *= y) { ans.add(xi + yj) if (y === 1) break } if (x === 1) break } return Array.from(ans) }
Код Python:
( Прыгните к : Описание задачи Идея решения
class Solution: def powerfulIntegers(self, x: int, y: int, bound: int) -> List[int]: ans, xi = set(), 1 while xi < bound: yj = 1 while xi + yj <= bound: ans.add(xi + yj) if y == 1: break yj *= y if x == 1: break xi *= x return list(ans)
Код Java:
( Прыгните к : Описание задачи Идея решения
class Solution { public ListpowerfulIntegers(int x, int y, int bound) { Set ans = new HashSet<>(); for (int xi = 1; xi < bound; xi *= x) { for (int yj = 1; xi + yj <= bound; yj *= y) { ans.add(xi + yj); if (y == 1) break; } if (x == 1) break; } return new ArrayList (ans); } }
C ++ Код:
( Прыгните к : Описание задачи Идея решения
class Solution { public: vectorpowerfulIntegers(int x, int y, int bound) { unordered_set ans; for (int xi = 1; xi < bound; xi *= x) { for (int yj = 1; xi + yj <= bound; yj *= y) { ans.insert(xi + yj); if (y == 1) break; } if (x == 1) break; } return vector (ans.begin(), ans.end()); } };
LeetCode Solutions (161 серия деталей)
Оригинал: “https://dev.to/seanpgallivan/solution-powerful-integers-1o2p”