题解 | #数组里面没有出现过的数字#
数组里面没有出现过的数字
http://www.nowcoder.com/practice/aa2a56603fb94b3395ea23ff89d37628
元素个数和数据范围一致,这不又是用复合数组吗,一个数组的值作为另一个数组的下标,用作计数或标记。
int* findDisappearedNumbers(int* nums, int numsLen, int* returnSize ) {
int mark[10001] = {0}; //标记数组
int* ret = (int*)malloc(sizeof(int) * 10001); //用指针定义返回数组
int i = 0;
for(i = 0; i<numsLen; i++){
mark[nums[i]] = 1; //把nums数组中出现过的数在mark数组中标记为1
}
int j = 0;
for(i = 1; i<=numsLen; i++){ //遍历标记数组,元素个数和nums数组一样
if(mark[i] == 0) //有标记=0表示没有出现过
ret[j++] = i; //那么就记录在返回数组里
}
*returnSize = j; //j即返回数组的长度
return ret;
}
查看9道真题和解析