题解:如何计算从1到n之间的“好数”数量
问题分析
小C对“好数”非常感兴趣,她定义一个不含前导零的正整数为“好数”,如果它的所有数位最多包含两种不同的数字。举个例子:
- 数字
23是好数,因为它只包含数字 2 和 3 两种。 - 数字
2323也是好数,因为它只包含数字 2 和 3 两种。 - 数字
100是好数,因为它只包含数字 1 和 0 两种。 - 数字
101是好数,因为它也只包含数字 1 和 0 两种。
我们的目标是:给定一个正整数 n,计算从 1 到 n 之间一共有多少个“好数”。
我的思考
1. “好数”的定义
一个数是“好数”,当且仅当它的所有数位最多包含两种不同的数字。我们可以将每个数的每一位数字提取出来,记录它们出现的情况。如果不同的数字种类超过两个,就不是“好数”。
2. 解题步骤
-
判断一个数是否为“好数” :
- 用一个数组或集合来记录数字出现的情况,最多只能包含两个不同的数字。
- 如果数字种类超过两个,直接返回
false,否则返回true。
-
遍历从1到n的所有整数:
- 对每个数字,检查它是否是“好数”,如果是,就增加计数。
-
返回结果:
- 遍历完后,返回计数值。
代码实现
#include <iostream>
using namespace std;
// 判断一个数是否为“好数”
bool isGoodNumber(int num) {
bool digitSeen[10] = {false}; // 用于记录数字出现情况
int distinctCount = 0; // 记录不同的数字个数
while (num > 0) {
int digit = num % 10; // 获取数字的最后一位
if (!digitSeen[digit]) {
digitSeen[digit] = true;
distinctCount++;
}
num /= 10; // 去除最后一位
}
return distinctCount <= 2; // 如果不同的数字不超过2个,返回true
}
int solution(int n) {
int count = 0;
for (int i = 1; i <= n; i++) {
if (isGoodNumber(i)) {
count++;
}
}
return count;
}
int main() {
// 测试案例
cout << (solution(110) == 102) << endl; // 输出: 1 (true)
cout << (solution(1000) == 352) << endl; // 输出: 1 (true)
cout << (solution(1) == 1) << endl; // 输出: 1 (true)
return 0;
}
刷题实践选题:功能亮点与刷题实践结合
在实际刷题过程中,AI刷题平台的功能亮点能够有效帮助我们理解并解决算法问题。以这道“好数”问题为例,以下是一些AI刷题平台的功能如何帮助我们更好地学习与提升:
1. 精选真题
- 功能介绍:AI刷题平台通过精选真实的编程面试题和竞赛题,帮助用户接触到最具挑战性和实际价值的题目。这些题目不仅能够提高我们的编程能力,还能让我们为真实的面试和比赛做好准备。
- 对学习的价值:通过分析这些精选题目,尤其是一些经典的数学或算法题目,我们能够更深入地理解算法的应用和优化方法,从而提升解题能力。
在这个“好数”问题中,精选的题目类型和解法为我们提供了很好的思路,了解如何通过遍历和数字拆解来判断某个数是否符合条件。
2. 云端编辑器
- 功能介绍:AI刷题平台提供了集成的在线编辑器,支持多种编程语言,用户可以在云端直接编写、调试和运行代码。无需搭建本地开发环境。
- 对学习的价值:云端编辑器让我们专注于算法的编写和调试,而不必浪费时间配置环境。特别是在解决这类简单遍历题时,我们能快速验证代码的正确性,并进行实时调试。
3. 个性化题目推荐
- 功能介绍:AI刷题平台会根据用户的解题进度、错题记录和薄弱领域,个性化地推荐适合的题目。这种推荐机制能够帮助用户避免做重复性过高或难度过大的题目。
- 对学习的价值:例如,如果我们在解决“好数”类的题目时遇到困难,AI平台可能会推荐其他相似的题目或基础题目,帮助我们巩固基础知识,并逐步提高解题能力。
4. 数据分析与反馈
- 功能介绍:AI刷题平台会实时收集用户的做题数据,提供如题目完成时间、解题正确率、题目类型分析等详细反馈。
- 对学习的价值:通过分析这些数据,平台能够帮助我们发现自己的薄弱环节。例如,如果我们在“数字遍历”题目中反复出错,平台会建议我们加大在该领域的训练。
5. 错题分析与复习
- 功能介绍:AI刷题平台根据学生的错误记录提供错题本,提醒用户定期复习错题,防止再次犯错。
- 对学习的价值:通过错题分析,我们可以理解自己的思维误区,弥补不足,在下次解题时更加精准。
刷题实践:如何通过AI刷题平台提升解题能力
通过AI刷题平台,我们能够体验到以下几方面的学习提升:
- 高效解决问题:AI刷题平台提供的个性化推荐和精选题目,让我们能够始终保持在合适的难度范围内,避免做过于简单或复杂的题目。
- 即时反馈:代码提交后,平台会立即反馈结果,帮助我们更快地找出问题并改进。
- 智能分析与进阶学习:平台根据我们的历史做题数据,推荐更高阶的题目,并通过错题复习和定期反馈,帮助我们逐步进阶。
结论
通过“好数”这一题目,我们不仅学习了如何判断一个数字是否符合特定条件,还能够通过实践体验到AI刷题平台的强大功能。精选真题、云端编辑器、个性化推荐和数据分析等功能,不仅提高了解题效率,还帮助我们发现自己的薄弱环节,提升了整体编程能力。在刷题过程中,结合AI平台的优势,我们能够更快速地提高自己,最终达到掌握和应用算法的目的。