leetcode链接:https://leetcode-cn.com/problems/shu-zu-zhong-zhong-fu-de-shu-zi-lcof/
题目
解法
分析:数组 nums 长度为 n ,且所有数字都在 0 - n-1 的范围内。因此可以采用使用另外一个长度为 n 的数组,然后对 nums 数组进行遍历,每遍历一个值 value,在新建数组下标为 value 的元素上进行判断,如果数组元素为0,则加一,如果为1,就将当前 value 返回。即 hash 表法。
// 使用布尔数组
class Solution {
public int findRepeatNumber(int[] nums) {
int len = nums.length;
boolean[] tmp = new boolean[len];
int res = 0;
for(int num:nums){
if (tmp[num]){
res = num;
break;
} else {
tmp[num] = true;
}
}
return res;
}
}
// 使用整形数组
class Solution {
public int findRepeatNumber(int[] nums) {
int len = nums.length;
int[] res = new int[len];
for(int num:nums){
res[num]++;
if(res[num] > 1){
return num;
}
}
return -1;
}
}