53-2-0~n-1中缺失的数字

题目:一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0~n-1之内。在范围0~n-1内的n个数字中有且只有一个数字不在该数组中,请找出这个数字。

def get_missing_num(nums):
    if len(nums)<1:
        return -1
    begin,end = 0,len(nums)-1
    while begin<end:
        mid = (begin+end)//2
        if nums[mid] == mid:
            begin = mid
        else:
            end = mid
        if begin+1==end:
            break
    if nums[begin]+1==nums[end]:
        return 0
    else:
        return nums[begin]+1

  注:使用二分查找的方式,如果中间的数与索引相同,说明缺失的数字在右边,让begin指向这个位置;如果中间的数与索引不相同,说明缺失的数字在左边,让end指向这个位置。最终找到begin和end相邻的两个数。如果这两个数也相差1,说明缺失的数位第一个数0,否则,缺失的数为这两个数的中间的数字。

猜你喜欢

转载自www.cnblogs.com/kingshine007/p/11502906.html