1. 线性搜索: 这是最简单的方法,遍历整个列表,找到第一个大于等于目标值的元素位置即为插入位置。
def search_insert(nums, target):
    for i in range(len(nums)):
        if nums[i] >= target:
            return i
    return len(nums)
  1. 二分搜索: 对于已排序的列表,可以使用二分搜索来提高搜索效率。首先比较中间元素与目标值的大小关系,然后根据比较结果确定搜索范围,重复该过程直至找到插入位置。
def search_insert(nums, target):
    left, right = 0, len(nums) - 1
    while left <= right:
        mid = (left + right) // 2
        if nums[mid] == target:
            return mid
        elif nums[mid] < target:
            left = mid + 1
        else:
            right = mid - 1
    return left
  1. 使用内置函数: 在 Python 中,可以使用 bisect 模块来实现搜索插入位置。bisect.bisect_left() 函数返回插入位置,如果元素已存在,则返回其左侧位置。
import bisect

def search_insert(nums, target):
    return bisect.bisect_left(nums, target)