|
| 1 | +from typing import List |
| 2 | + |
| 3 | + |
| 4 | +class Solution: |
| 5 | + def numsSameConsecDiff(self, n: int, k: int) -> List[int]: |
| 6 | + solution = set() |
| 7 | + |
| 8 | + def next_int(curr_val): |
| 9 | + if len(curr_val) == n: |
| 10 | + solution.add(int(curr_val)) |
| 11 | + return |
| 12 | + prev = int(curr_val[-1]) |
| 13 | + if prev + k < 10: |
| 14 | + next_int(curr_val+(str(prev+k))) |
| 15 | + if prev - k >= 0: |
| 16 | + next_int(curr_val+(str(prev-k))) |
| 17 | + |
| 18 | + for i in range(1, 10): |
| 19 | + next_int(str(i)) |
| 20 | + return list(solution) |
| 21 | + |
| 22 | + |
| 23 | +s = Solution() |
| 24 | +cases = [ |
| 25 | + (3, 7, [181, 292, 707, 818, 929]), |
| 26 | + (2, 1, [10, 12, 21, 23, 32, 34, 43, 45, 54, 56, 65, 67, 76, 78, 87, 89, 98]), |
| 27 | + (2, 0, [11, 22, 33, 44, 55, 66, 77, 88, 99]), |
| 28 | + (2, 1, [10, 12, 21, 23, 32, 34, 43, 45, 54, 56, 65, 67, 76, 78, 87, 89, 98]), |
| 29 | + (2, 2, [13, 20, 24, 31, 35, 42, 46, 53, 57, 64, 68, 75, 79, 86, 97]) |
| 30 | +] |
| 31 | +for n, k, expected in cases: |
| 32 | + actual = s.numsSameConsecDiff(n, k) |
| 33 | + actual, expected = sorted(actual), sorted(expected) |
| 34 | + assert actual == expected, f"{n, k}: {expected} != {actual}" |
0 commit comments