【数组】0~n-1中缺失的数字

题目:
一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0~n-1之内。在范围0~n-1内的n个数字中有且只有一个数字不在该数组中,请找出这个数字。

示例 1:

输入: [0,1,3]
输出: 2

解题思路
排序数组中的搜索问题,首先想到 二分法 解决。

  1. 设置两个指针,i和j分别指向列表首尾
  2. 使用(i+j)//2查看该值是否等于数组中的元素,等于的话,则缩小范围,在右半边
  3. 否则,在左半边,然后进行该循环。直到首尾指针交换位置,结束循环
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

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