找出数组中重复的数字。
在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。
来源:力扣(LeetCode)
链接:力扣
分析:
1.排序思想:对nums数组排序,出现相同的数字返回
class?Solution?{
????public?int?findRepeatNumber(int[]?nums)?{
????????Arrays.sort(nums);
????????for(int?i?=?1;i<nums.length;i++){
????????????if(nums[i-1]?==?nums[i])
????????????????return?nums[i-1];
????????}
????????return?-1;
????}
}
2. 哈希思想,创建一个新的空间,逐个插入数据,当插入失败证明重复
class?Solution?{
????public?int?findRepeatNumber(int[]?nums)?{
????????int[]?tmp?=?new?int[nums.length];
????????Arrays.fill(tmp,-1);
????????for(int?i?=?0;i<nums.length;i++){
????????????if(tmp[nums[i]]?==?nums[i])
????????????????return?nums[i];
????????????tmp[nums[i]]?=?nums[i];
????????}
????????return?-1;
????}
}
class?Solution?{
????public?int?findRepeatNumber(int[]?nums)?{
????????Set<Integer>?set?=?new?HashSet<>();
????????for(int?i=0;i<nums.length;i++){
????????????if(!set.add(nums[i]))
????????????????return?nums[i];
????????}
????????return?-1;
????}
}
?
刷题多一点,大厂近亿点!
|