「无零整数」是十进制表示中 不含任何 0 的正整数。
给你一个整数 n
,请你返回一个 由两个整数组成的列表 [A, B]
,满足:
A
和B
都是无零整数A + B = n
题目数据保证至少有一个有效的解决方案。
如果存在多个有效解决方案,你可以返回其中任意一个。
示例 1:
输入:n = 2
输出:[1,1]
解释:A = 1, B = 1. A + B = n 并且 A 和 B 的十进制表示形式都不包含任何 0 。
示例 2:
输入:n = 11
输出:[2,9]
示例 3:
输入:n = 10000
输出:[1,9999]
示例 4:
输入:n = 69
输出:[1,68]
示例 5:
输入:n = 1010
输出:[11,999]
提示:
2 <= n <= 10^4
解题思路
首先可以使用暴力法,从1~n
枚举所有数i
,然后判断是不是[i,n-1]
都满足条件即可。
class Solution:def getNoZeroIntegers(self, n: int) -> List[int]:for i in range(1, n):r = str(n - i)if '0' in r or '0' in str(i):continuereturn [i, n - i]
在python3.6
中新加入了f
格式化的语法,所以有更pythonic
的写法
class Solution:def getNoZeroIntegers(self, n: int) -> List[int]:return next([a, n-a] for a in range(1, n) if '0' not in f'{a}{n-a}')
我将该问题的其他语言版本添加到了我的GitHub Leetcode
如有问题,希望大家指出!!!