python 搜索插入位置 多种解法
原创
©著作权归作者所有:来自51CTO博客作者编程小白狼的原创作品,请联系作者获取转载授权,否则将追究法律责任
- 线性搜索: 这是最简单的方法,遍历整个列表,找到第一个大于等于目标值的元素位置即为插入位置。
def search_insert(nums, target):
for i in range(len(nums)):
if nums[i] >= target:
return i
return len(nums)
- 二分搜索: 对于已排序的列表,可以使用二分搜索来提高搜索效率。首先比较中间元素与目标值的大小关系,然后根据比较结果确定搜索范围,重复该过程直至找到插入位置。
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
- 使用内置函数: 在 Python 中,可以使用
bisect
模块来实现搜索插入位置。bisect.bisect_left()
函数返回插入位置,如果元素已存在,则返回其左侧位置。
import bisect
def search_insert(nums, target):
return bisect.bisect_left(nums, target)