Leetcode287.寻找重复数

Leetcode287.寻找重复数

  • 题目描述
  • 代码示例

题目描述

给定一个包含 n + 1 个整数的数组 nums,其数字都在 1 到 n 之间(包括 1 和 n),可知至少存在一个重复的整数。假设只有一个重复的整数,找出这个重复的数。
示例1

输入: [1,3,4,2,2]
输出: 2

示例2

输入: [3,1,3,4,2]
输出: 3

代码示例

public class LeetCode287 {

    public static void main(String[] args) {
        System.out.println(new LeetCode287().findDuplicate(new int[]{1,5,2,3,3,4}));
    }
    public int findDuplicate(int[] nums) {
        int fast = 0;
        int slow = 0;
        while (true) {
            fast = nums[nums[fast]];
            slow = nums[slow];
            if (fast == slow) {
                slow = 0;
                while (nums[fast] != nums[slow]) {
                    fast = nums[fast];
                    slow = nums[slow];
                }
                return nums[slow];
            }
        }
    }
}

Leetcode287.寻找重复数_第1张图片

你可能感兴趣的:(leetcode,算法,职场和发展)