当前位置:网站首页>leetcode——错误的集合

leetcode——错误的集合

2022-06-24 07:07:00 编程SHARE

错误的集合

在这里插入图片描述

解题思路

建一个有序的集合,数据从小到大1~n。然后依次遍历原集合,原集合里面的数据出现一次就把有序集合中的该数据制成0,当遍历的时候有序集合出现为0的情况,就找到了重复的一个数值,当遍历完的时候,有序集合中非0的就是缺少的数值。
时间复杂度O(n),空间复杂度O(n)

代码

int* findErrorNums(int* nums, int numsSize, int* returnSize){
    
    *returnSize=2;
    int* duibi=(int*)malloc(sizeof(int)*numsSize);
    int* ret=(int*)malloc((*returnSize)*sizeof(int));
    int i=0;
    for(i=0;i<numsSize;i++)
    duibi[i]=i+1;
    for(i=0;i<numsSize;i++)
    {
    
        if(duibi[nums[i]-1]  ==0)
        ret[0]=nums[i];
        else
        duibi[nums[i]-1]=0;
    }
    for(i=0;i<numsSize;i++)
    if(duibi[i]!=0)
    ret[1]=duibi[i];
    free(duibi);
    return ret;
}
原网站

版权声明
本文为[编程SHARE]所创,转载请带上原文链接,感谢
https://blog.csdn.net/m0_60598323/article/details/125394945