Given a sorted array and a target value, return the index if the target is found. If not, return the index where it would be if it were inserted in order.
You may assume no duplicates in the array.
Example 1:
Input: [1,3,5,6], 5
Output: 2
Example 2:
Input: [1,3,5,6], 2
Output: 1
Example 3:
Input: [1,3,5,6], 7
Output: 4
Example 4:
Input: [1,3,5,6], 0
Output: 0
思路<一>想法比较简单,如果有直接返回位置,如果没有,先加入到数组中,再进行排序,最后返回位置。
class Solution(object):
def searchInsert(self, nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: int
"""
if target in nums:
return nums.index(target)
return sorted((nums+[target])).index(target)
思路<二>用for循环找到位置。这里我顺序找的效率比较低,应该换成二分查找会快些。
class Solution(object):
def searchInsert(self, nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: int
"""
if target in nums:
return nums.index(target)
else:
for i,num in enumerate(nums):
if num > target:
break
else:
i += 1
return i
本文介绍了一种查找算法,用于确定目标值在已排序数组中的插入位置。提供了两种实现方式:一种通过直接添加并排序来定位,另一种使用循环遍历查找。这两种方法均假设数组元素唯一且有序。

被折叠的 条评论
为什么被折叠?



