https://leetcode.com/problems/numbers-with-same-consecutive-differences/

Return all **non-negative** integers of length n such that the absolute difference between every two consecutive digits is k.
Note that **every** number in the answer **must not** have leading zeros. For example, 01 has one leading zero and is invalid.
You may return the answer in **any order**.

**Example 1:**
**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.
**Example 2:**
**Input:** n = 2, k = 1 **Output:** [10,12,21,23,32,34,43,45,54,56,65,67,76,78,87,89,98]

**Constraints:**

```
2 <= n <= 9
0 <= k <= 9
```

- code

```
class Solution {
private int target;
private int diff;
private List<Integer> res = new ArrayList<>();
public int[] numsSameConsecDiff(int n, int k) {
target = n;
diff = k;
for (int i = 1; i < 10; i++){
build(i);
}
return res.stream().mapToInt(i -> i).toArray();
}
private void build(int cur){
int digits = String.valueOf(cur).length();
if (digits > target) return;
if (digits == target){
res.add(cur);
return;
}else{
int last = cur % 10;
if (last >= diff) build(cur * 10 + last - diff);
if (diff == 0) return;
if (last + diff < 10) build(cur * 10 + diff + last);
}
}
}
```