一、 问题描述
二、算法思想
- 输入n和nums数组。
- 初始化一个大小为n+1的数组counts,初始值都为0。
- 遍历nums数组,将counts[nums[i]]的值加1。
- 遍历counts数组,找到第一个值为0的索引,即为没有出现在数组中的那个数。
- 输出结果。
三、代码实现
#include <stdio.h>
int findMissingNumber(int nums[], int n) {
int sum = 0;
for (int i = 0; i < n; i++) {
sum += nums[i]; // 计算数组中所有数的和
}
int totalSum = (n * (n + 1)) / 2; // 计算0到n的所有数的和
return totalSum - sum; // 缺失的数即为两者差值
}
int main() {
int n;
scanf("%d", &n); // 输入n
int nums[n]; // 存储n个数的数组
// 输入n个数
for (int i = 0; i < n; i++) {
scanf("%d", &nums[i]);
}
// 调用函数找出缺失的数
int missingNumber = findMissingNumber(nums, n);
// 输出结果
printf("%d", missingNumber);
return 0;
}
执行结果
结语
微笑面对危险,梦想成真不会遥远
鼓起勇气坚定向前,奇迹一定会出现
!!!