题解 | #数组中重复的数字#

数组中重复的数字

http://www.nowcoder.com/practice/6fe361ede7e54db1b84adc81d09d8524

用一个初值均为0,长度和原数组相同的数组来给出现的每个数计算出现的次数,一旦出现次数大于1次表示该数重复,就可以收网了。
int duplicate(int* numbers, int numbersLen ) {
    if(numbersLen == 0)
        return -1;
    int* arr;
    arr = (int*)malloc(sizeof(int) * numbersLen);
    int i;
    for(i = 0; i<numbersLen; i++)
        arr[i] = 0;   //新数组元素初值都为0表示没出现过
    for(i = 0; i < numbersLen; i++){
         if(arr[numbers[i]] == 0)
              arr[numbers[i]]++;   //对于没出现过的数才计数
         else
             return numbers[i];   //对于已经出现过的数就直接返回
    }
    return -1;
}





全部评论
for循环过后没有重复数会先执行return numbers[i],此时i=numbersLen,不是吗?
点赞 回复 分享
发布于 2022-07-24 14:29

相关推荐

喵_coding:这实习干啥了? 没写出来一点产出啊 好好回忆一下干了啥 问问ai 问问大佬 准备些话术就好了
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务