方法一:排序
对数组中的排序,重复的数据排序前后数组相邻。
class Solution{
public int findDuplicate(int[] nums){
Arrays.sort(nums);
for(int i=1;i<nums.length;i++){
if(nums[i]==nums[i-1]){
return nums[i];
}
}
return -1;
}
}
时间复杂度:O(nlgn)。
空间复杂度:O(1).
方法二:集合
class Solution{
public int findDuplicate(int[]nums){
Set<Integer>seen=new HashSet<Integer>();
for(int num:nums){
if(seen.contains(num)){
return num;
}
seen.add(num);
}
return -1;
}
}