题目
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
请必须使用时间复杂度为 O(log n) 的算法
我的答案
看到时间复杂度要求O(log n),立马想到了二分法~
有个地方差点出错:循环的条件应该是while right>=left
class Solution:
def searchInsert(self, nums: List[int], target: int) -> int:
left = 0
right = len(nums)-1
if target <= nums[0]:
return 0
while right>=left:
middle = (left + right) // 2
if (target < nums[middle]):
right = middle-1
elif (target > nums[middle]):
left = middle+1
elif (target == nums[middle]):
return middle
indice = right+1
return indice
参考答案
看了一下参考答案,哎呀!怎么忘了python里还有index
这个好东西呢!
class Solution:
def searchInsert(self, nums, target):
if target in nums:
return nums.index(target)
else:
nums.append(target)
nums.sort()
return nums.index(target)