数组中重复的数字
找出数组中重复的数字
问题描述:
力扣链接
在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。
方法一:排序做法
将数组进行排序,排序后再查找重复数字。
class Solution {
public int findRepeatNumber(int[] nums) {
Arrays.sort(nums);
int pre = nums[0];
for(int index=1; index < nums.length; index++){
if(pre == nums[index])
return pre;
pre = nums[index];
}
return -1;
}
}
时间复杂度:O(nlogn),空间复杂度:O(1)
方法二:哈希表
从头到尾按顺序扫描数组的每个数字,每扫描到一个数字的时候,都可以用O(1)的时间来判断哈希表里是否存在这个数字,如果不存在的话,就把该数字加入到这个哈希表中,如果存在的话就说明该数字重复。