寻找重复数
给定一个包含 n + 1 个整数的数组 nums ,其数字都在 [1, n] 范围内(包括 1 和 n),可知至少存在一个重复的整数。
假设 nums 只有 一个重复的整数 ,返回 这个重复的数 。
你设计的解决方案必须 不修改 数组 nums 且只用常量级 O(1) 的额外空间。
示例 1:
输入:nums = [1,3,4,2,2]
输出:2
1
2
2
/**
* @param {number[]} nums
* @return {number}
*/
var findDuplicate = function(nums) {
let l = 1
let r = nums.length - 1
while(l < r) {
let mid = Math.floor((l + r) / 2)
let count = 0
for(let i = 0; i < nums.length; i++) {
if(mid >= nums[i]) count++
}
if(count <= mid) {
l = mid + 1
}else {
r = mid
}
}
return r
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/find-the-duplicate-number