题目描述:给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引,如果目标值不存在于数组中,返回它将会按顺序插入的位置。
- 例如:
- 输入:[1, 3, 5, 6],5
- 输出:2
- 解题思路:
- 目标值存在四种情况:1.在数组所有元素之前;2.等于数组中某个元素;3.插入数组中间的位置;4.在所有元素之后。
- 暴力解法
def solve(nums, target):
# 前3种情况
for i in range(len(nums)):
if target <= nums[i]:
return i
# 最后一种
return len(nums)
- 时间复杂度:
- 空间复杂度:
-
二分法
def binarysolve(nums, target):
left = 0
right = len(nums) - 1
while left <= right:
middle = (left + right) // 2
if nums[middle] == target:
return middle
if nums[middle] > target:
right = middle - 1
if nums[middle] < target:
left = middle + 1
return right + 1
- 时间复杂度:
- 空间复杂度: