import sys import bisect n = int(input()) nums = list(map(int, input().split())) # res = 0 # cur = 1 # last = nums[0] # for x in nums: # if x - last == 1: # cur += 1 # if cur > res: # res = cur # else: # cur = 1 # last = x # print(res) nums.append(n+1) l = 0 r = n - 1 while l<r: mid = (l+r)//2 if nums[mid] - mid==1: l = mid + 1 elif nums[mid] - mid==2: r = mid res = nums[r] - 2 print(max(res, n-1-res))
二分法,数字比序号大1,说明缺少数字在右侧,否则说明在左侧。
复杂度:log(n)