# Find the Duplicate Number

﻿﻿
Given an array nums containing n + 1 integers where each integer is between 1 and n (inclusive), prove that at least one duplicate number must exist. Assume that there is only one duplicate number, find the duplicate one.

Note:

1. You must not modify the array (assume the array is read only).
2. You must use only constant, O(1) extra space.
3. Your runtime complexity should be less than  O(n2).
4. There is only one duplicate number in the array, but it could be repeated more than once.

1） 排序后遍历：不符合条件1的要求，数组不可改；

2） map：不符合条件2的要求，O(n)的空间复杂度。

Dumplicate数。这样考虑是因为以为只会重复两次，但是题目并没有这么说，即如果存在多次（比如偶数次），最后还是可能转为正数。

public class Solution {
public int findDuplicate(int[] nums) {
int index, length = nums.length, result = 0;
for(int i = 0; i < length; i++) {
index = nums[i];
if(index < 0) {
index *= -1;
}
if(nums[index] < 0) {
result = index;
break;
} else {
nums[index] *= -1;
}
}
return result;
}
}

• 本文已收录于以下专栏：
• Leetcode

举报原因： 您举报文章：Find the Duplicate Number 色情 政治 抄袭 广告 招聘 骂人 其他 (最多只允许输入30个字)