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

数组中重复的数字

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

做到O(n) 时间复杂度
int duplicate(vector<int>& numbers) {
         int len = numbers.size();  //统计数组个数
        if(len == 0)  return -1;  //如果数组为空,直接返回
        vector<int>arr(len,0);  // O(n)时间复杂度,题目中说 长度为n的数组里的所有数字都在0到n-1的范围内,刚好是创建一个长度为n的数组的下标
        for(int i:numbers){   //遍历
           if(i>=0&&i<=len-1){     //判断是否是合法输入,不是直接返回
               if(arr[i] >=1)  return i;  //如果我发现重复的,就直接返回
               else arr[i]++;   //没有,就插入
           }
            else 
                return -1;
        }
        return 0;
    }
#c++#
全部评论

相关推荐

Noob1024:一笔传三代,人走笔还在
点赞 评论 收藏
分享
11-07 13:31
怀化学院 Java
勇敢牛牛不怕难:又疯一个
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务