对于这道题,我的思路就是桶排序,先循环遍历一次,把统计数组里每个数出现的数量,如果有数出现的数量超过了1,就return
它。
时间复杂度:$O(n)$
class Solution {
public:
int duplicateInArray(vector<int>& nums) {
int b[1005] = {0};//该数组用来统计数据出现次数
for (int i = 0; i < nums.size(); i ++)
{
if (nums[i] > nums.size() - 1 || nums[i] < 0)//如果不在给定范围内就直接return
return -1;
b[nums[i]] ++;//否则这个数出现的次数+1
}
for (int i = 0; i < nums.size(); i ++)//再循环遍历一遍完事
if (b[i] > 1)
return i;
return -1;
}
};
都看到这了,能给我个赞吗?这对我真的很重要!
给你个赞
我也给个赞吧