题目
找出数组中重复的数字。 在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。
解决思路
遍历整个数组,使用哈希表记录出现的数字。当遇到未出现过的数字时,将该数存入哈希表,否则返回false。
代码实现
C++版
class Solution {
public:
int findRepeatNumber(vector<int>& nums) {
map<int,bool> mp;
for(int i = 0;i < nums.size();i ++){
if(mp[nums[i]]) return nums[i];
mp[nums[i]] = true;
}
return -1;
}
};
java版
lass Solution {
public int findRepeatNumber(int[] nums) {
Set <Integer> map = new HashSet<>();
for(int num : nums){
if(map.contains(num)){
return num;
}
map.add(num);
}
return -1;
}
}
|