题目描述
题目描述不清,实则意思是数组内数据范围需要再0-n-1,如有不合规的则返回-1
可以使用哈希表很简单的解决问题
样例
blablabla
算法
哈希表求解
时间复杂度
$O(n)$
C 代码
int duplicateInArray(int *nums, int numsSize){
int hash[100000];//哈希表的范围是数组的范围,即空间复杂度O(n)
for(int i=0;i<numsSize;i++){
hash[nums[i]]++;//元素出现则对应位置哈希表++
if(nums[i]>=numsSize||nums[i]<0)return -1;//排除所有不合规情况
}
for(int i=0;i<numsSize;i++){
if(hash[nums[i]]==2)return nums[i];//合规情况
}
return -1;//空数组
}