265просмотров
7.0%от подписчиков
23 марта 2026 г.
statsScore: 292
Задача: 967. Numbers With Same Consecutive Differences
Сложность: medium Даны два целых числа n и k, верните массив всех целых чисел длины n, где разница между каждыми двумя последовательными цифрами равна k. Вы можете вернуть ответ в любом порядке. Учтите, что целые числа не должны начинаться с нулей. Целые числа, такие как 02 и 043, не допускаются. Пример:
Input: n = 3, k = 7
Output: [181,292,707,818,929]
Explanation: Note that 070 is not a valid number, because it has leading zeroes. 👨💻 Алгоритм: 1⃣Если n равно 1, верните массив от 0 до 9, так как все однозначные числа являются допустимыми. 2⃣Инициализируйте список очередей начальными цифрами от 1 до 9. 3⃣Для каждого уровня (от 1 до n-1) создайте новый список очередей, добавляя к каждому числу в текущей очереди допустимые цифры, которые удовлетворяют условию разницы k. 😎 Решение:
func numsSameConsecDiff(N int, K int) []int { if N == 1 { return []int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9} } queue := []int{1, 2, 3, 4, 5, 6, 7, 8, 9} for level := 1; level < N; level++ { nextQueue := []int{} for _, num := range queue { tailDigit := num % 10 nextDigits := []int{tailDigit + K, tailDigit - K} for _, nextDigit := range nextDigits { if nextDigit >= 0 && nextDigit < 10 { nextQueue = append(nextQueue, num*10+nextDigit) } } } queue = nextQueue } return queue
} Ставь 👍 и забирай 📚 Базу знаний