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 except for the number 0 itself. For example, 01 has one leading zero and is invalid, but 0 is valid.
You may return the answer in any order.
Example
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.
Solution
func numsSameConsecDiff(N int, K int) []int {
nums := []int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
if N==1{
return nums
}
ret := nums[1:]
for i:=1;i<N;i++ {
tmp:= make([]int, 0, len(ret)*2)
for _,v := range ret{
r := v%10
if K>0 && r+K<10{
tmp = append(tmp, v*10+r+K)
}
if r-K>=0{
tmp = append(tmp, v*10+r-K)
}
}
ret = tmp
}
return ret
}