首页 > 其他 > 详细

35. 搜索插入位置

时间:2020-07-09 23:05:45      阅读:63      评论:0      收藏:0      [点我收藏+]

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

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

示例 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. 搜索插入位置

原文:https://www.cnblogs.com/hly97/p/13276588.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!