目标
我们定义「顺次数」为:每一位上的数字都比前一位上的数字大 1 的整数。
请你返回由 [low, high] 范围内所有顺次数组成的 有序 列表(从小到大排序)。
示例 1:
输出:low = 100, high = 300
输出:[123,234]
示例 2:
输出:low = 1000, high = 13000
输出:[1234,2345,3456,4567,5678,6789,12345]
说明:
- 10 <= low <= high <= 10^9
思路
定义顺序数字为从左到右每一位都比前一位的数字大 1 的整数。返回 [low, high] 范围内的所有顺序数字,按从小到大返回。
枚举数字长度以及开头数字,判断生成的顺序数字是否在 [low, high] 内即可。
代码
/**
* @date 2026-07-13 9:10
*/
public class SequentialDigits1291 {
public List<Integer> sequentialDigits(int low, int high) {
int l = Integer.toString(low).length();
int r = Integer.toString(high).length();
List<Integer> res = new ArrayList<>();
for (int i = l; i <= r; i++) {
for(int j = 1; j + i <= 10; j++){
Integer num = genInteger(j, i);
if (low <= num && num <= high){
res.add(num);
}
}
}
return res;
}
public Integer genInteger(int first, int length) {
int res = 0;
for (int i = 0; i < length && first < 10; i++) {
res = res * 10 + first;
first++;
}
return res;
}
}
性能















