本题有可能出现多个重复的数字,但是只要求找出一个重复的数字,所以可以用二分查找。
二分的方法只能保证找到其中一个重复的数字,并不能把所有重复的数字找出来
为什么能用二分做?
因为一共有n+1个数字,但是每个数字都在1~n之间。
其实将n+1个数字划分成两部分,一定有一部分的长度是大于n/2的。
而长度大于n/2的长度那部分一定至少有一个重复的数字。
(注意,长度等于n/2的那部分区间有可能存在重复的数字)
这是为什么呢?
因为抽屉原理。我们划分的时候是按照值二分的,左边值的范围是1~n/2,右边是n/2 + 1 ~ n,
所以不管左边长度超了n/2还是右边,不同的值只有n/2个,一共有超过n/2个数,
根据抽屉原理,这部分一定存在重复的值。