返回所有长度为 n
且满足其每两个连续位上的数字之间的差的绝对值为 k
的 非负整数 。
请注意,除了 数字 0
本身之外,答案中的每个数字都 不能 有前导零。例如,01
有一个前导零,所以是无效的;但 0
是有效的。
你可以按 任何顺序 返回答案。
示例 1:
输入:n = 3, k = 7 输出:[181,292,707,818,929] 解释:注意,070 不是一个有效的数字,因为它有前导零。
示例 2:
输入:n = 2, k = 1 输出:[10,12,21,23,32,34,43,45,54,56,65,67,76,78,87,89,98]
示例 3:
输入:n = 2, k = 0 输出:[11,22,33,44,55,66,77,88,99]
示例 4:
输入:n = 2, k = 2 输出:[13,20,24,31,35,42,46,53,57,64,68,75,79,86,97]
提示:
2 <= n <= 9
0 <= k <= 9
package Solution967;
import java.util.ArrayList;
import java.util.Arrays;
class Solution {
public int[] numsSameConsecDiff(int n, int k) {
ArrayList<Integer> al = new ArrayList<Integer>();
int end = 1;
for (int i = 0; i < n; i++) {
end = end * 10;
}
int begin = end / 10;
boolean check = true;
for (int i = begin; i < end; i++) {
check = true;
for (int j = 1; j < n; j++) {
if ((Math.abs(Integer.parseInt(String.valueOf(i).substring(j, j + 1))
- Integer.parseInt(String.valueOf(i).substring(j - 1, j))) != k)) {
check = false;
}
}
if (check == true) {
al.add(i);
}
}
int[] out = new int[al.size()];
for (int i = 0; i < al.size(); i++) {
out[i] = al.get(i);
}
return out;
}
public static void main(String[] args) {
Solution sol = new Solution();
int n = 6, k = 4;
System.out.println(Arrays.toString(sol.numsSameConsecDiff(n, k)));
}
}
超时