35. 搜索插入位置

给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。

你可以假设数组中无重复元素。

示例 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

 

你可能感兴趣的:(35. 搜索插入位置)