LeetCode.287寻找重复数

题目来源:https://leetcode-cn.com/problems/find-the-duplicate-number/ 

题目描述:

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

解题方法:由题目关键信息,一共有n+1个数,数组的值在1-n之间并且只有1个重复的数,我们利用下标和数值之间的关系遍历这个数组,每当遍历一个新的数,将这个数看成下标i,让nums[i]=0,当遍历到某个位置nums[i]等于0时,说明这个数被遍历过,则说明这个数字就是那个重复的数字。

代码如下:

class Solution {
    public int findDuplicate(int[] nums) {
        int i = 0;
        while (nums[i] != 0) {
            int x = nums[i];
            nums[i] = 0;
            i = x;
        }
        return i;
    }
}

 

你可能感兴趣的:(LeetCode)