1
class Solution {
2
public List<Integer> sequentialDigits(int low, int high) {
3
int lowSize = String.valueOf(low).length(), highSize = String.valueOf(high).length();
4
List<Integer> output = new ArrayList<>();
5

6
for (int size = lowSize; size <= highSize; size++) {
7
int seedNumber = getSeedNumber(size);
8
int increment = getIncrement(size);
9
int limit = (int) Math.pow(10, size);
10
// System.out.println(seedNumber+":"+increment+":"+limit);
11
while (true) {
12
if (seedNumber >= low && seedNumber <= high) output.add(seedNumber);
13
if (seedNumber % 10 == 9 || seedNumber > high) break;
14
seedNumber += increment;
15
}
16
}
17
return output;
18
}
19

20
private int getSeedNumber(int size) {
21
int seed = 1;
22
for (int i = 2; i <= size; i++) seed = 10 * seed + i;
23
return seed;
24
}
25

26
private int getIncrement(int size) {
27
int increment = 1;
28
for (int i = 2; i <= size; i++) increment = 10 * increment + 1;
29
return increment;
30
}
31
}

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0