【LeetCode - 每日1题】将整数转换为两个无零整数的和
🌈 个人主页:(时光煮雨)
🔥 高质量专栏:vulnhub靶机渗透测试
👈 希望得到您的订阅和支持~
💡 创作高质量博文(平均质量分95+),分享更多关于网络安全、Python领域的优质内容!(希望得到您的关注~)
🌵目录🌵
- 难度 ⭐⭐
- 题目回顾
- ✅ 解题思路
-
- 💖 概述
- 💓 核心思路
- ✅ 代码实现
- ✅ 测试用例验证
-
- ✅ 示例 1(n=2)
- ✅ 示例 2(n=11)
- ✅ 示例 3(n=10000)
- ✅ 示例 4(n=69)
- ✅ 示例 5(n=1010)
- ✅ 边缘用例(n=10)
- 💖 总结
- 🤝 期待与你共同进步
- 📚 参考文档
难度 ⭐⭐
题目回顾
「无零整数」是十进制表示中 不含任何 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
✅ 解题思路
💖 概述
通过随机生成一个整数 a(1 ≤ a ≤ n-1),计算 b = n - a,检查 a 和 b 的十进制表示是否均不含 ‘0’。若满足条件则返回 [a, b],否则重复生成随机数直到找到有效解。
💓 核心思路
- 随机生成候选值:在区间 [1, n-1] 内随机生成整数a。
- 检查无零条件:将 a 和 b = n - a 转换为字符串,检查是否包含字符 ‘0’。
- 保证终止:
题目保证至少存在一个有效解,因此循环必然终止
。
✅ 代码实现
from random import randint
from typing import Listclass Solution:def getNoZeroIntegers(self, n: int) -> List