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

数组中重复的数字

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

题目描述:

在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组[2,3,1,0,2,5,3],那么对应的输出是2或者3。存在不合法的输入的话输出-1

解题思路:

由于题目里面说“长度为n的数组里的所有数字都在0到n-1范围内”,那么只需要重新设计一个等长的数组,用于计数原题目中给出的数组元素出现的次数,最后返回相应的数组元素。

如果没有说“长度为n的数组里的所有数字都在0到n-1范围内”,那就需要设计一个大范围的数组或者动态数组。


int duplicate(int* numbers, int numbersLen ) {
    int num[numbersLen];
    int i;
    //数组初始化
    for(i=0;i<numbersLen;i++){
        num[i] = 0;
    }
    //按照给定的number数组,对应的num数组进行计数,计算有多少个重复的数字
    for(i=0;i<numbersLen;i++){
        num[numbers[i]]++;
    }
    for(i=0;i<numbersLen;i++){
        if(num[numbers[i]]>1)
            return numbers[i];
    }
    return -1;
}
全部评论
建议优化成一个for循环
点赞
送花
回复 分享
发布于 2022-07-12 23:12
还是报错了
点赞
送花
回复 分享
发布于 2023-03-21 09:40 浙江
现代汽车中国前瞻数字研发中心
校招火热招聘中
官网直投

相关推荐

7 1 评论
分享
牛客网
牛客企业服务