第2题:编号35.搜索插入位置

45 阅读1分钟

题目

力扣题目链接

给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 你可以假设数组中无重复元素。

思路

4种情况:

  1. 目标值在数组所有元素之前 [0,-1]
  2. 目标值等于数组中的某一个元素 return middle
  3. 目标值插入数组中的位置 return right+1
  4. 目标值在所有元素之后 return right+1 因为right是len(nums) - 1

代码

class Solution:
    def searchInsert(self, nums: List[int], target: int) -> int:
        left = 0
        right = len(nums) - 1
        while left <= right:
            mid = (left + right) // 2
            if nums[mid] < target:
                left = mid + 1
            elif nums[mid] > target:
                right = mid - 1
            else:
                return mid
        return right +1