967 Numbers With Same Consecutive Differences
1.题目描述
返回所有长度为 N
且满足其每两个连续位上的数字之间的差的绝对值为 K
的非负整数。
请注意,除了数字 0
本身之外,答案中的每个数字都不能有前导零。例如,01
因为有一个前导零,所以是无效的;但 0
是有效的。
你可以按任何顺序返回答案。
示例 1:
输入:N = 3, K = 7
输出:[181,292,707,818,929]
解释:注意,070 不是一个有效的数字,因为它有前导零。
示例 2:
输入:N = 2, K = 1
输出:[10,12,21,23,32,34,43,45,54,56,65,67,76,78,87,89,98]
提示:
1 <= N <= 9
0 <= K <= 9
2.解题思路
确定第一个数字之后,下一位将有一个或者两个选项。
利用集合,遍历要求位数的所有可能数字。
3.Python代码
class Solution:
def numsSameConsecDiff(self, N, K):
"""
:type N: int
:type K: int
:rtype: List[int]
"""
ans={x for x in range(1,10)}
for _ in range(N-1):
ans2=set()
for i in ans:
d=i%10
if d+K<=9:
ans2.add(10*i+d+K)
if d-K>=0:
ans2.add(10*i+d-K)
ans=ans2
if N==1:
ans.add(0)
return list(ans)