题目应该是默认数组有序的,用二分搜索即可,O(logn). 其他方法如位运算或者求和公式都是O(n)的复杂度。
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 找缺失数字
# @param a int整型一维数组 给定的数字串
# @return int整型
#
class Solution:
def solve(self , a ):
# write code here
n = len(a)
lo, hi = 0, n-1
pos = 0
while lo <= hi:
mid = lo + (hi-lo)/2
if a[mid] == mid:
lo += 1
elif a[mid] > mid:
hi -= 1
pos = mid
if a[pos] == pos:
return pos +1
elif a[pos] > pos:
return pos
return pos


京公网安备 11010502036488号