解题思路
使用hash表存储一下数组中每一个数字出现的次数,在存储的过程中,如果出现数组中的元素大于 n - 1
,的情况,那么直接return -1;
,否则就使该元素出现的次数 +1。统计完成后再遍历一下数组的每一个元素,如果出现数组中的数组出现多次,那么return该数字即可。最后return -1;
。
解题思路(C++)
class Solution {
public:
int duplicateInArray(vector<int>& nums) {
unordered_map<int, int> hash;
int len = nums.size();
for (auto i : nums) {
if (i > len - 1) return -1;
hash[i]++;
}
for (int i = 0; i < len; i++) {
if (hash[nums[i]] > 1) return nums[i];
}
return -1;
}
};