【leetcode】1215.Stepping Numbers
2024-09-05 11:01:26
题目如下:
A Stepping Number is an integer such that all of its adjacent digits have an absolute difference of exactly
1
. For example,321
is a Stepping Number while421
is not.Given two integers
low
andhigh
, find and return a sorted list of all the Stepping Numbers in the range[low, high]
inclusive.Example 1:
Input: low = 0, high = 21
Output: [0,1,2,3,4,5,6,7,8,9,10,12,21]Constraints:
0 <= low <= high <= 2 * 10^9
解题思路:如果x是一个Stepping Number,假设x的个位是y,那么x*10 + y - 1 (y-1 >=0) 和 x*10 + y + 1 (y+1<=9) 也是Stepping Number,根据这个规律把所有符合条件的数字求出来即可。
代码如下:
class Solution(object):
def countSteppingNumbers(self, low, high):
"""
:type low: int
:type high: int
:rtype: List[int]
"""
queue = range(0,10)
res = set()
while len(queue) > 0:
val = queue.pop(0)
if val >= low and val <= high:
res.add(val)
last = int(str(val)[-1])
if last < 9:
new_val = int(str(val) + str(last+1))
if new_val <= high:
queue.append(new_val)
if last > 0:
new_val = int(str(val) + str(last-1))
if new_val <= high:
queue.append(new_val)
return sorted(list(res))
最新文章
- JS 脚本最后加载
- jquery.tmpl.js 模板引擎用法
- Mac使用入门
- Crt单元
- Java中sleep()和wait()的区别
- 服务器判断客户端为移动端还是PC端
- LightOj 1096 - nth Term (矩阵快速幂,简单)
- Java笔记(一)&hellip;&hellip;概述
- uboot之board.c源码分析
- 高性能消息队列 CKafka 核心原理介绍(上)
- Java代码输出是“father”还是“child”(一)
- 深度学习之自编码器AutoEncoder
- Caching漫谈--关于Cache的几个理论
- ajax之async属性
- Deep Learning for NLP
- 洛谷P4135 作诗
- ROS知识(20)----SLAM资源集合
- AtCoder Beginner Contest 115 Solution
- php解析HTML
- oracle 跨库访问