leetcode-剑指offer 53
点击:题目链接:一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0~n-1之内。在范围0~n-1内的n个数字中有且只有一个数字不在该数组中,请找出这个数字。
示例 1:
输入: [0,1,3]
输出: 2
示例 2:
输入: [0,1,2,3,4,5,6,7,9]
输出: 8
思路一
读完题目,我们发现几个条件:
- 该数组是递增有序的
- 数字只出现一次
- 只有一个数不再数组内
因此首先我们想到的就是暴力的方法,逐一扫描找出该数
代码
1 | class Solution { |
思路二
根据暴力的解法,我们发现当低位出现数组下标和元素的值不匹配的时候,那么之后的所有的数都是不匹配的。因此我们可以使用二分法(双指针)。首先查看中值是否符合条件,若不相等右指针缩小范围。若相等,将左指针移动到中值,下一部分的二分之一。
代码
1 | class Solution { |
leetcode-剑指offer 53