#解法1:类似于第一个错误点判断,为sorted数列,
#当target位于mid左边时,mid有可能为插入位置,因此设置mid最大=high;
#当target位于mid右边时,mid不可能为插入位置,因此mid+1
#该解法需要考虑边界问题,防止超出索引,因此len()长度要考虑好
class Solution:
def searchInsert(self, nums, target) -> int:
low,high=0,len(nums)
while low<high:
mid=low+(high-low)//2
if nums[mid]>=target:
high=mid
elif nums[mid]<target:
low=mid+1
return high
'''
#解法2:常规二分解法
class Solution:
def searchInsert(self, nums, target) -> int:
left,right = 0,len(nums)-1
while(left<=right):
mid = left+(right-left)//2
if(nums[mid]==target):
return mid
elif(nums[mid]<target):
left = mid + 1
elif(nums[mid]>target):
right = mid - 1
return left
'''
if __name__=='__main__':
nums=[1,3,5,7,9,11,13]
target=2
a=Solution()
print(a.searchInsert(nums,target))
解法1耗时:
解法2耗时: