给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
你可以假设数组中无重复元素。
示例 1:
输入: [1,3,5,6], 5
输出: 2
示例 2:
输入: [1,3,5,6], 2
输出: 1
示例 3:
输入: [1,3,5,6], 7
输出: 4
示例 4:
输入: [1,3,5,6], 0
输出: 0
方法1:
用python内置函数:append,sort,index
先插入,再重新排序,最后查找index
1 class Solution: 2 def searchInsert(self, nums: List[int], target: int) -> int: 3 nums.append(target) 4 nums.sort() 5 return nums.index(target)
有个可能的bug是如果target存在的话,nums列表中是会有两个target的
如果题目有这个要求,就再pop掉好了
方法2:
二分查找法
1 class Solution: 2 def searchInsert(self, nums: List[int], target: int) -> int: 3 if target>nums[-1]: 4 return len(nums) 5 l,r=0,len(nums)-1 6 ans=-1 7 while l<=r: 8 mid=(l+r)//2 9 if target<=nums[mid]: 10 r=mid-1 11 ans=mid 12 else: 13 l=mid+1 14 # ans=mid-1 15 return ans