日更488找到所有数组中消失的数组

日更488找到所有数组中消失的数组

haimian
2024-12-06 / 0 评论 / 6 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2024年12月06日,已超过135天没有更新,若内容或图片失效,请留言反馈。

给你一个含 n 个整数的数组 nums ,其中 nums[i] 在区间 [1, n] 内。请你找出所有在 [1, n] 范围内但没有出现在 nums 中的数字,并以数组的形式返回结果。
代码结果。我这个貌似很多解答里面都没有,可能我这个办法比较少??
哈希+暴力寻找

int* findDisappearedNumbers(int* nums, int numsSize, int* returnSize) {
    // 根据numsSize合理分配arr大小,这里多分配1位方便对应1到numsSize的范围
    int* arr = (int*)malloc((numsSize + 1) * sizeof(int));
    int *res = (int*)malloc(sizeof(int) * numsSize);
    int i = 0;
    // 先初始化arr数组元素为0
    for (i = 0; i <= numsSize; i++) {
        arr[i] = 0;
    }
    // 标记出现过的数字,对应下标位置计数加1
    for (i = 0; i < numsSize; i++) {
        arr[nums[i]]++;
    }
    int index = 0;
    // 遍历 [1, numsSize] 范围,找出计数为0的,也就是没出现过的数字
    for (i = 1; i <= numsSize; i++) {
        if (arr[i] == 0) {
            res[index++] = i;
        }
    }
    free(arr);  // 释放为arr动态分配的内存
    *returnSize = index;
    return res;
}

m4bzgggm.png
m4bzgm16.png

0

评论 (0)

取消