Leetcode 滑动窗口顺次数(1291)

Posted Timeashore

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Leetcode 滑动窗口顺次数(1291)相关的知识,希望对你有一定的参考价值。

题目

我们定义「顺次数」为:每一位上的数字都比前一位上的数字大 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

解答

作为一个拥有聪明才智的程序员,最重要的能力就是迅速抽象问题、拆解问题的能力。经过一段时间的思考,我的大脑里还是没有思路。

没主意了,那就用爆破吧!经过长达几十分钟的修修改改,终于,我放弃了。直到在评论区看到下面这句话:
123456789,按始末数字长度滑窗判断。

我嘞个妈呀,滑动窗口,三分钟写完,low和hight的长度为常数,复杂度都是O(1)

通过代码如下:

class Solution:
    # Time: O(1), Space: O(1)
    def sequentialDigits(self, low, high):
        ans = []
        min, max = len(str(low)), len(str(high))
        s = '123456789'

        while min <= max:  # 窗口大小
            for i in range(9-min+1):  # 防止越界
                temp = int(s[i:i+min])
                if temp >= low and temp <= high:
                    ans.append(temp)
            min += 1
        return ans

以上是关于Leetcode 滑动窗口顺次数(1291)的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode 1838 最高频元素的频数[滑动窗口] HERODING的LeetCode之路

Leetcode No.187 重复的DNA序列(滑动窗口)

Leetcode No.187 重复的DNA序列(滑动窗口)

leetcode 76. Minimum Window Substring

LeetCode 剑指Offer II 041滑动窗口的平均值[滑动窗口] HERODING的LeetCode之路

Leetcode——重复的DNA序列