LeetCode简单题3(寻找重复数)

找出数组中重复的数

题目描述:
在一个长度为n的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。(限制2<=n<=100000)
请找出数组中任意一个重复的数字.
样例:
输入:[2,3,1,0,2,5,3]
输出:2或3
题解:
根据题中信息数组长度为n且数字都在0~n-1范围,可以知道不重复的数字都满足下标与数字相等,即nums[i]=i,eg:[0,1,2,3,4,4],只有重复的数字nums[5]=4不满足nums[5]=5。
代码:

public int findRepeatNumber(int[] nums) {
  int result;
  for(int i=0 ; i<nums.length ; i++){
     while(nums[i] != i) {
        if(nums[i] == nums[nums[i]]){
              result = nums[i];
              return result;
        }
        //把对应下标的数字放在应该在的位置
        int temp = nums[nums[i]];
        nums[nums[i]] = nums[i];
        nums[i] = temp;
     }  
  }
  return -1
}
发布了20 篇原创文章 · 获赞 0 · 访问量 238
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 深蓝海洋 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览