题解 | #数组中重复的数字#
数组中重复的数字
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++#