头歌资源库(9)丢失的数字

71 阅读1分钟

一、 问题描述

二、算法思想   

  1. 输入n和nums数组。
  2. 初始化一个大小为n+1的数组counts,初始值都为0。
  3. 遍历nums数组,将counts[nums[i]]的值加1。
  4. 遍历counts数组,找到第一个值为0的索引,即为没有出现在数组中的那个数。
  5. 输出结果。

三、代码实现 

#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;
}

执行结果

结语      

微笑面对危险,梦想成真不会遥远

鼓起勇气坚定向前,奇迹一定会出现

!!!