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