287.寻找重复数
解法一:二分
class Solution:
def findDuplicate(self, nums: List[int]) -> int:
n = len(nums)
l = 1
r = n-1
while l <= r :
mid = l + (r-l) //2
cnt = 0
for i in range(n): #求cnt[mid]
if nums[i] <= mid:
cnt += 1
if cnt > mid:
r = mid - 1
else:
l = mid + 1
return l最后更新于