找出数组中重复的数字。
在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。
示例 1:
输入:
[2, 3, 1, 0, 2, 5, 3]
输出:2 或 3
限制:
2 <= n <= 100000
解题思路:
- 暴力解用空间换时间
- 用一个新数组统计原数组中每个数字的出现频率
- 再遍历新数组找到重复数字
- 因为这里说明了重复数字不止一个,而且题目说明只找一个重复数字即可
- 所以找到第一个重复数字就跳出循环,停止寻找,返回该数字即可
class Solution {
int k;//定义k,用于保存记录的重复值
public int findRepeatNumber(int[] nums) {
a:for(int i=0;i<nums.length;i++){
for(int j=i+1;j<nums.length;j++){
if(nums[i]==nums[j]){//寻找重复值
k= nums[i]; //记录重复值
break a; //找到第一个重复值后,就跳出所有循环,因为break是跳出当前循环,所以要指定跳出的循环
}
}
}
return k;//返回该重复值
}
}