题目应该是默认数组有序的,用二分搜索即可,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