大家好,我叫小伍,今天开始正式更新“剑指Offer”系列的编程题,本系列使用的语言是java,希望我的讲解可以帮助到大家。
刷题地址:
剑指Offer在线刷题
1、数组中重复的数字
题目:找出数组中重复的数字。
在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,
但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。
示例 1:
输入:[2, 3, 1, 0, 2, 5, 3]
输出:2 或 3
备注:如果看不清题目或者想练习这道题的小伙伴,可以直接点击下面的地址
数组中重复的数字
**解法1:**使用hash表
class Solution {
public int findRepeatNumber(int[] nums) {
Set<Integer> set=new HashSet<Integer>();//定义hash表
//set表示每次添加数字不可以重复
int res=-1;//如果找不到重复的元素就返回-1
for(int num:nums){
if(!set.add(num)){
//如果add失败了,那么也就找到重复的元素
res=num;
break;
}
}
return res;
}
}
**解法2:**先排序然后再找重复的元素
class Solution {
public int findRepeatNumber(int[] nums) {
//先排序,再比较
Arrays.sort(nums);
for(int i = 0;i<nums.length-1;i++){
if(nums[i]