题目如下:
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
解题思路:和 【leetcode】1215.Stepping Numbers 思路是一样的,利用BFS的思想,把所有符合条件的数字找出来。
代码如下:
class Solution(object): def sequentialDigits(self, low, high): """ :type low: int :type high: int :rtype: List[int] """ res = [] queue = range(1,10) while len(queue) > 0: val = queue.pop(0) if val >= low and val <= high: res.append(val) elif val > high: continue last = int(str(val)[-1]) if last == 9:continue new_val = str(val) + str(last + 1) queue.append(int(new_val)) return sorted(res)