码迷,mamicode.com
首页 > 其他好文 > 详细

【Leetcode 滑动窗口】顺次数(1291)

时间:2019-12-19 19:07:00      阅读:129      评论:0      收藏:0      [点我收藏+]

标签:dig   sel   tco   没有   排序   一个   pen   定义   列表   

题目

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

标签:dig   sel   tco   没有   排序   一个   pen   定义   列表   

原文地址:https://www.cnblogs.com/ldy-miss/p/12069383.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!