给定一个 n + 1 个整数组成的数组 nums,其数字都在 1 到 n 之间(包括 1,n),可知至少存在一个重复的整数。
题意:1~n个数本来该是n个数,组成n+1个数,则必然有重复数,找出重复数,而且题目假设只有一个重复数,所以剩下的数要填满1-n的数
使用二分方法,统计<=mid的个数,如果左边不重复,则<=mid的数,应该为mid的值,如果大于mid的值,说明有左边有重复的数,反之右边有重复的数;抽屉原理
不改变原数组的排序,空间复杂度为O(1)
本题说的nums的范围是[1,n],所以去找中位数mid,然后nums和中位数去比较,虽然nums没有排序,但是整个nums中小于等于mid的个数,要是比mid大,说明统计的时候左边多统计了有重复数
class Solution:
def findDuplicate(self, nums: List[<