Problem
An integer has sequential digits if and only if each digit in the number is one more than the previous digit.
Return a sorted list of all the integers in the range [low, high]
inclusive that have sequential digits.
Example 1:
Input: low = 100, high = 300
Output: [123,234]
Example 2:
Input: low = 1000, high = 13000
Output: [1234,2345,3456,4567,5678,6789,12345]
Constraints:
10 <= low <= high <= 10^9
Solution
/**
* @param {number} low
* @param {number} high
* @return {number[]}
*/
var sequentialDigits = function(low, high) {
var len1 = low.toString().length;
var len2 = high.toString().length;
var res = [];
for (var i = len1; i <= len2; i++) {
for (var j = 1; j <= 9 - i + 1; j++) {
var num = Array(i).fill(0)
.map((_, index) => j + index)
.reduce((sum, n) => sum * 10 + n, 0);
if (num >= low && num <= high) {
res.push(num);
}
}
}
return res;
};
Explain:
nope.
Complexity:
- Time complexity : O(log(n)).
- Space complexity : O(log(n)).