Leetcode 35.搜索插入位置(Search Insert Position)

Leetcode 35.搜索插入位置 1 题目描述(Leetcode题目链接) ??给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。

输入: [1,3,5,6], 5 输出: 2输入: [1,3,5,6], 2 输出: 1输入: [1,3,5,6], 7 输出: 4输入: [1,3,5,6], 0 输出: 0

2 题解 【Leetcode 35.搜索插入位置(Search Insert Position)】??二分法查找正确位置,关键在于边界的处理,循环限制条件最好为 l e f t < r i g h t left n u m s [ m i d ] target>nums[mid] target>nums[mid]说明,目标位置一定在 m i d mid mid右侧,应该 l e f t = m i d + 1 left = mid + 1 left=mid+1,反之,如果 t a r g e t ≤ n u m s [ m i d ] target \le nums[mid] target≤nums[mid],则目标位置可能在 m i d mid mid处,也可能在 m i d mid mid左侧,应该 r i g h t = m i d right = mid right=mid。
class Solution: def searchInsert(self, nums: List[int], target: int) -> int: if not nums: return 0 i, j = 0, len(nums) while i < j: mid = (i + j)//2 if target > nums[mid]: i = mid + 1 else: j = mid return i

    推荐阅读