📅  最后修改于: 2023-12-03 15:11:33.385000             🧑  作者: Mango
这是一个用于解决搜索问题的算法。给定一个已排序的数组和一个目标值,如果目标值在数组中则返回其索引,否则返回它将要被插入的位置的索引。 时间复杂度为O(log n),具有较高的效率。
算法实现需要注意的点:
实现代码如下:
def searchInsert(nums: List[int], target: int) -> int:
left, right = 0, 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 left
代码解析:
我们可以使用下面的测试用例来测试算法的正确性和效率:
assert searchInsert([1,3,5,6], 5) == 2
assert searchInsert([1,3,5,6], 2) == 1
assert searchInsert([1,3,5,6], 7) == 4
assert searchInsert([1,3,5,6], 0) == 0
这个算法是解决搜索问题很好的选择,时间复杂度为O(log n),具有较高的效率,在实际应用中也有很高的价值。