首页 > 试题广场 >

数组里面没有出现过的数字

[编程题]数组里面没有出现过的数字
  • 热度指数:1268 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
给定一个长度为N的正整数数组nums,其中nums[i]的值都在区间[1,n]中,请你找出nums数组在[1,n]范围里面没有出现过的数字,并将它们放在数组里面返回(在数组里面的顺序可以不唯一)

注:本题有时间复杂度为O(n),空间复杂度为O(1)的解法,返回的数组不计入空间复杂度计算

数据范围:


示例1

输入

[2,1,4,5,1,2]

输出

[3,6]

说明

数组长度为6,那么范围为[1,6],其中3和6没有在数组里面出现,返回[3,6]  
示例2

输入

[1,1]

输出

[2]
/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param nums int整型一维数组 
 * @param numsLen int nums数组长度
 * @return int整型一维数组
 * @return int* returnSize 返回数组行数
 */
int* findDisappearedNumbers(int* nums, int numsLen, int* returnSize ) {
    // write code here
    int *hash=(int *)calloc(numsLen,sizeof(int));
    int *ans=(int *)malloc(numsLen*sizeof(int));
    for(int i=0;i<numsLen;i++){
        hash[nums[i]-1]=1;
    }
    int count=0;
    for(int j=0;j<numsLen;j++){
        if(hash[j]==0){
            ans[count++]=j+1;
        }

    }
    *returnSize=count;
    return ans;

}

发表于 2022-12-23 22:54:46 回复(0)