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

数组中重复的数字

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++#
全部评论

相关推荐

点赞 评论 收藏
分享
03-29 12:10
门头沟学院 C++
挣K存W养DOG:散漫消极者淘汰,一眼坑爹。实习几个月转正的时候说你加班太少,能力还行态度不够积极裁了,马上老实。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务