LeetCode 967. Numbers With Same Consecutive Differences
interestring question.
The order of calculation is very important.
class Solution { public int[] numsSameConsecDiff(int n, int k) { //10 ^ n => max 10^9.. List<Integer> answer = new ArrayList<>(); for (int lastDigit = 1; lastDigit <= 9; lastDigit++){ findAnswer(n, k, 1, lastDigit, lastDigit, answer); } int[] finalAnswer = new int[answer.size()]; for (int i = 0; i < answer.size(); i++){ finalAnswer[i] = answer.get(i); } return finalAnswer; } private void findAnswer(int n, int k, int digit, int lastDigit, int currentNumber, List<Integer> answer){ if (digit == n){ answer.add(currentNumber); return; } if (lastDigit - k >= 0 && k != 0){ findAnswer(n, k, digit + 1, lastDigit - k, currentNumber * 10 + lastDigit - k, answer); } if (lastDigit + k < 10) { findAnswer(n, k, digit + 1, lastDigit + k, currentNumber * 10 + lastDigit + k, answer); } } }