• 【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
    
  • 相关阅读:
    docker创建tomcat容器
    【转载】张一鸣:为什么 BAT 挖不走我们的人才?
    Elastic认证考试,请先看这一篇
    vs code 初始化vue项目框架
    Idea集成git常用命令
    pxc搭建mysql集群
    mysql无限级分类
    Java面试题大全
    SpringMVC和Spring
    Redis高级特性
  • 原文地址:https://www.cnblogs.com/ldy-miss/p/12069383.html
Copyright © 2020-2023  润新知