35.搜索插入位置
给定一个排序数组和一个目标值,如果在数组中找到目标值则返回索引。如果没有,返回到它将会被按顺序插入的位置。
你可以假设在数组中无重复元素。
示例
输入: [1,3,5,6], 5
输出: 2输入: [1,3,5,6], 2
输出: 1输入: [1,3,5,6], 7
输出: 4输入: [1,3,5,6], 0
输出: 0
我
if target in nums:
return nums.index(target)
else:
if target < nums[0]:
return 0
elif target > nums[-1]:
return len(nums)
else:
for i in range(len(nums)-1):
if nums[i] < target < nums[i+1]:
return i+1
总结:查找方式可以采用二分查找提高效率。
别人
lo = 0
hi = len(nums)
while lo < hi:
mid = lo + (hi - lo) / 2
if nums[mid] > target:
hi = mid
elif nums[mid] < target:
lo = mid + 1
else:
return mid
return lo