题目描述
找出数组中重复的数字。【难度:简单】
在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。
示例 :
输入:[2, 3, 1, 0, 2, 5, 3]
输出:2 或 3
解题思路
1.定义一个新的数组arr,数组长度为原数组nums的个数;
2.遍历循环nums中每一个元素并将arr中对应序号元素+1;
3.对arr数组中每个元素进行判断,如果该元素>1,则代表该位置元素加了1次以上,即为重复元素;
4.返回重复元素即可,若没有重复元素,则返回-1。
代码部分
class Solution {
public int findRepeatNumber(int[] nums) {
int l=nums.length; //数组的长度
//新建一个新的集合存储
int[] arr=new int[l];
//遍历循环元素
for(int i=0;i<l;i++){
arr[nums[i]]+=1; //在新数组arr对应的位置+1
if(arr[nums[i]]>1){ //若arr数组中某个位置元素个数>1,则表示元素重复了,将它返回即可
return nums[i];
}
}
return -1; //没有重复元素则返回-1
}
}