跳至主要內容

1317. 将整数转换为两个无零整数的和

ITCharge大约 1 分钟

1317. 将整数转换为两个无零整数的和open in new window

  • 标签:数学
  • 难度:简单

题目链接

题目大意

描述:给定一个整数 nn

要求:返回一个由两个整数组成的列表 [A,B][A, B],满足:

  • AABB 都是无零整数。
  • A+B=nA + B = n

说明

  • 无零整数:十进制表示中不含任何 00 的正整数。
  • 题目数据保证至少一个有效的解决方案。
  • 如果存在多个有效解决方案,可以返回其中任意一个。
  • 2n1042 \le n \le 10^4

示例

  • 示例 1:
输入:n = 2
输出:[1,1]
解释:A = 1, B = 1. A + B = n 并且 A 和 B 的十进制表示形式都不包含任何 0
  • 示例 2:
输入:n = 11
输出:[2,9]

解题思路

思路 1:枚举

  1. 由于给定的 nn 范围为 [1,10000][1, 10000],比较小,我们可以直接在 [1,n)[1, n) 的范围内枚举 AA,并通过 nAn - A 得到 BB
  2. 在判断 AABB 中是否都不包含 00。如果都不包含 00,则返回 [A,B][A, B]

思路 1:代码

class Solution:
    def getNoZeroIntegers(self, n: int) -> List[int]:
        for A in range(1, n):
            B = n - A
            if '0' not in str(A) and '0' not in str(B):
                return [A, B]

思路 1:复杂度分析

  • 时间复杂度O(n×logn)O(n \times \log n)
  • 空间复杂度O(1)O(1)