首页 > 其他 > 详细

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

时间:2019-09-10 22:59:02      阅读:112      评论:0      收藏:0      [点我收藏+]

题目:一个长度为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,否则,缺失的数为这两个数的中间的数字。

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

原文:https://www.cnblogs.com/kingshine007/p/11502906.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!