力扣645.错误的集合

发布时间:2024年01月21日

一点一点地刷,慢慢攻克力扣!!

王子公主请看题

集合 s 包含从 1 到 n 的整数。不幸的是,因为数据错误,导致集合里面某一个数字复制了成了集合里面的另外一个数字的值,导致集合 丢失了一个数字 并且 有一个数字重复 。给定一个数组 nums 代表了集合 S 发生错误后的结果。

请你找出重复出现的整数,再找到丢失的整数,将它们以数组的形式返回。
具体如下:

思路一:

建一个数组,存放nums数组每个元素出现个数,再一次for循环找到次数为0的对应下标就是我们的目标数字


int* findErrorNums(int* nums, int numsSize, int* returnSize) {

? ? *returnSize = 2;

? ? int* arr = (int*)calloc(sizeof(int), (numsSize + 1));

? ? for (int i = 0; i < numsSize; i++)

? ? ? ? arr[nums[i]]++;

? ? for (int i = 1; i <= numsSize; i++)

? ? {

? ? ? ? if (arr[i] == 2)

? ? ? ? ? ? arr[0] = i;

? ? ? ? if (arr[i] == 0)

? ? ? ? ? ? arr[1] = i;

? ? }

? ? return arr;

}

思路二

for循环双重嵌套,一个一个从1到n进行比较,找到没出现的数即可

AC!

文章来源:https://blog.csdn.net/2301_79551553/article/details/135723936
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。