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,否则,缺失的数为这两个数的中间的数字。