题目描述
给定一个包含n+1个整数的数组nums,其数字都在1到n之间(包括1和n),可知至少存在一个重复的整数,假设只有一个重复的整数,找出这个重复的数。
输入: [1,3,4,2,2] 输出:2
分析
- 注意长度和数字范围是有关系的。因此不能简单地用双指针。——值和索引有关系
- 二分法——可以用于确定一个有范围的整数
长度为n+1,每个数都在1-n之间,二分法确定left和right以及mid,如果小于mid的数字个数大于一半,则在小于部分区域,反之在大于部分区域。
- 如何想到二分法:
数组无序但是是有界的;
重复数字会影响mid的左右区间的个数数量
代码
