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

数组中重复的数字

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;
}
全部评论
还是报错了
点赞 回复 分享
发布于 2023-03-21 09:40 浙江
建议优化成一个for循环
点赞 回复 分享
发布于 2022-07-12 23:12

相关推荐

风中翠竹:真的真的真的没有kpi。。。面试官是没有任何kpi的,捞是真的想试试看这个行不行,碰碰运气,或者是面试官比较闲现在,没事捞个人看看。kpi算HR那边,但是只有你入职了,kpi才作数,面试是没有的。
点赞 评论 收藏
分享
屌丝逆袭咸鱼计划:心态摆好,man,晚点找早点找到最后都是为了提升自己好进正职,努力提升自己才是最关键的😤难道说现在找不到找的太晚了就炸了可以鸡鸡了吗😤早实习晚实习不都是为了以后多积累,大四学长有的秋招进的也不妨碍有的春招进,人生就这样
点赞 评论 收藏
分享
评论
7
1
分享

创作者周榜

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