剑指 Offer 53 - II: 0~n-1中缺失的数字

剑指 Offer 53 - II: 0~n-1中缺失的数字_第1张图片

看到这道题的第一反应就是二分查找,由于是递增的所以二分查找所需的时间很短 ,设置一个左,一个右,一个中间,如果判断吧不同需要想下前面是否一样,如果是那么就找到,不是再继续二分查找。

剑指 Offer 53 - II: 0~n-1中缺失的数字_第2张图片

 我的思路出错了,应该是找左子数组末位元素

下面这个方法是书上的,比较好理解,

 

没有最后一个多余的判断的话,会永远返回0,因为程序是有可能跳出循环的,就是在当前长度找不到的时候,所以直接返回length即可(只有这一种可能找不到从而跳出循环)

剑指 Offer 53 - II: 0~n-1中缺失的数字_第3张图片

修改了后还有问题,最后判断的条件有问题

剑指 Offer 53 - II: 0~n-1中缺失的数字_第4张图片

谨记,一定是和nums的长度比较,因为找不到的话,那么就说明最后L和R会收敛至相等的程度,然后L+1(越界,等于length),所以才需要和length去比较!

剑指 Offer 53 - II: 0~n-1中缺失的数字_第5张图片

 

 

 

你可能感兴趣的:(#,剑指offer,java)