第一周01:剑指 Offer 03. 数组中重复的数字

找出数组中重复的数字

在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。

class Solution {
    public int findRepeatNumber(int[] nums) {
         int len = nums.length;
         for(int i=0;i<len;i++){
             if(nums[i]!=i){
                 if(nums[i]==nums[nums[i]]){
                    return nums[i];
                 } else {
                    int tmp = nums[nums[i]];
                    nums[nums[i]] = nums[i];
                    nums[i]=tmp;
                }
            }
        }
        return -1;
    }
}

思路:交换i和nums[i]数字,直到发现有重复的,返回这个数。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。