请找出数组中任意一个重复的数字

在一个长度为 n 的数组 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,请找出数组中任意一个重复的数字。
public static int findRepeatNumber(int[] nums) {
//找出nums[]中的最大数
        int maxNumber = 0;
        /**
         * 当以nums[]的数值作为arr[]的索引时,
         * 如果nums[]的元素的最大值大于arr[]的长度,
         * 有可能会发生数组越界访问,
         * 所以arr[]的长度至少要大于等于(maxNumber+1)
         */
        for (int i = 0; i < nums.length; i++) {
            if(nums[i]>maxNumber){
                maxNumber=nums[i];
            }
        }
        int[] arr = new int[maxNumber + 1];
        for (int i = 0; i < nums.length; i++) {
            arr[nums[i]]++;
            //返回nums[]中第一个重复的数
            if (arr[nums[i]]>1){
                return nums[i];
            }
        }
        return 0;
    }
发布了7 篇原创文章 · 获赞 0 · 访问量 129

猜你喜欢

转载自blog.csdn.net/success360/article/details/105443391