LeetCode/剑指 Offer 53 - II. 0~n-1中缺失的数字
剑指 Offer 53 - II. 0~n-1中缺失的数字
一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0~n-1之内。在范围0~n-1内的n个数字中有且只有一个数字不在该数组中,请找出这个数字。
示例 1:
1 | 输入: [0,1,3] |
示例 2:
1 | 输入: [0,1,2,3,4,5,6,7,9] |
限制:
1 | 1 <= 数组长度 <= 10000 |
来源:力扣(LeetCode)
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
题解:
本题一看到递增排序数组,那直接二分查找的基调就定了下来,然后再思考,满足条件的数组应该是什么样子。我们举个例子,数组为[0,1,3],这是一个长度为n - 1的数组,完整的长度为n的数组应该是[0,1,2,3],缺失了2,所以应该返回2。仔细观察,可以发现满足条件nums[i] = i的时候,[0,i]之间一定都是满足条件的,所以缺失值出现在[i + 1, n - 1],当nums[i] != i时,缺失情况出现,此时left值即为缺失值,由于需要跳出循环,所以我们需要让右边界缩小。
具体代码如下:
1 | class Solution { |

