Notes:
(1)需要提前判断不符合条件的情况,若有这种情况,直接返回-1. 这道题需要注意如果给定的数组中元素<0或者>n,那么直接返回-1,哪怕该数组中确实存在重复元素。
(2)自己在写代码时,将判断不符合条件情况的代码写在了和判断是否有重复的同一个for循环中,这会导致如果先扫到了重复数组元素,那么将会返回重复元素,但由于还没有扫到负数或大于n的元素,会被忽略掉。
代码:
class Solution {
public int duplicateInArray(int[] nums) {
int hashTable[]=new int[nums.length];
for(int i=0;i<nums.length;i++){
if(nums[i]<0 || nums[i]>=nums.length){
return -1;
}
}
for(int i=0;i<nums.length;i++){
hashTable[nums[i]]=hashTable[nums[i]]+1;
if(hashTable[nums[i]]>1){
return nums[i];
}
}
return -1;
}
}