📅  最后修改于: 2023-12-03 14:51:27.238000             🧑  作者: Mango
在排序数组中搜索K的插入位置是一道经典的二分查找问题。给定一个有序数组和一个目标值K,要求在数组中找到K的插入位置,如果K存在,则返回它的下标;如果K不存在,则返回它应该插入的位置的下标。
本题可以使用二分查找的思想来解决。具体思路如下:
def searchInsert(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
nums1, target1 = [1,3,5,6], 5
assert searchInsert(nums1, target1) == 2
# 测试样例2
nums2, target2 = [1,3,5,6], 2
assert searchInsert(nums2, target2) == 1
# 测试样例3
nums3, target3 = [1,3,5,6], 7
assert searchInsert(nums3, target3) == 4
# 测试样例4
nums4, target4 = [1,3,5,6], 0
assert searchInsert(nums4, target4) == 0
本题使用二分查找的时间复杂度为O(log n),其中n为数组的长度。因此,本算法的时间复杂度是比较优秀的。