找出数组中重复的数字

题目需求:给定一个长度为 n的整数数组 nums,数组中所有的数字都在 0∼n−1的范围内。
数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。
请找出数组中任意一个重复的数字。
注意:如果某些数字不在 0∼n−1的范围内,或数组中不包含重复数字,则返回 -1;
数据范围:0≤n≤1000

解决办法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
class Solution {
public int duplicateInArray(int[] nums) {
if(nums==null||nums.length==0)
{
return -1;
}
for(int i=0;i<nums.length;i++)
{
if(nums[i]<0||nums[i]>nums.length-1)
{
return -1;
}
}
int[] temp = new int[nums.length];
for(int i = 0; i < nums.length; i++){
temp[nums[i]]++;
}
for(int i = 0; i < temp.length; i++)
{
if(temp[i] > 1)
{
return i;
}
}
return -1;
}
}