长度为N的数组中正常的编号为0–N-1,可能有重号了,也可能是编号有误,所以有可能少了一些编号。请你编写一个函数,计算所给整数数组中缺少多少个编号。
(1=<N<=999999)
定义变量sum=0,记录查缺的个数,不考虑时间复杂度和空间复杂度,这道题可以用五种方法做出来:
双重循环查重法:
先从左到右扫描数组,访问数组元素,如果数据在0~N-1之间,就重新扫描一遍数组寻找是否有其他元素与该数重复,如果出现重复sum++;如果数据不在该范围内,就sum++。最后返回sum。
代码如下:
int fun ( int d[], int N ){
int flag,sum=0; //flag作为重复标记,值为1说明有重复,为0说明没有重复
for(int i=0;i<N;i++){
flag=0;
if(d[i]>=0&&d[i]<N){
for(int j=0;j<N;j++){
if(i!=j&&d[i]==d[j]){
flag=1;
break;
}
}
if(flag)
sum++;
}
else
sum++;
}
return sum;
}