题目:
一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0~n-1之内。在范围0~n-1内的n个数字中有且只有一个数字不在该数组中,请找出这个数字。
示例 1:
输入: [0,1,3]
输出: 2
解题思路:
排序数组中的搜索问题,首先想到 二分法 解决。
- 设置两个指针,i和j分别指向列表首尾
- 使用(i+j)//2查看该值是否等于数组中的元素,等于的话,则缩小范围,在右半边
- 否则,在左半边,然后进行该循环。直到首尾指针交换位置,结束循环
class Solution:
def missingNumber(self, nums: List[int]) -> int:
i, j = 0, len(nums) - 1
while i <= j:
m = (i + j) // 2
if nums[m] == m: i = m + 1
else: j = m - 1
return i
这就是本科上交,研究生西交的大佬吗,i了i了。我写那真的是烂代码o(╥﹏╥)o