Skip to content

1291. Sequential Digits

Description

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

 

Solutions

Solution: Breadth-First Search

  • Time complexity: O(36 -> 1)
  • Space complexity: O(9 -> 1)

 

JavaScript

js
/**
 * @param {number} low
 * @param {number} high
 * @return {number[]}
 */
const sequentialDigits = function (low, high) {
  const result = [];
  let queue = [1, 2, 3, 4, 5, 6, 7, 8, 9];

  while (queue.length) {
    const nextQueue = [];

    for (const num of queue) {
      if (num > high) continue;

      if (num >= low) {
        result.push(num);
      }

      const prev = num % 10;
      const nextDigit = prev + 1;

      if (nextDigit > 9) continue;

      nextQueue.push(num * 10 + nextDigit);
    }

    queue = nextQueue;
  }

  return result;
};

Released under the MIT license