1、题目描述
https://leetcode-cn.com/problems/search-insert-position/
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。
输入: [1,3,5,6], 5
输出: 2
输入: [1,3,5,6], 2
输出: 1
输入: [1,3,5,6], 7
输出: 4
输入: [1,3,5,6], 0
输出: 0
2、代码详解
class Solution(object):
def searchInsert(self, nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: int
"""
size = len(nums)
if size == 0:
return 0
left = 0
# 因为有可能数组的最后一个元素的位置的下一个是我们要找的,故右边界是 len!
right = size
while left < right:
mid = (left + right) >> 1
# 严格小于 target 的元素一定不是解
if nums[mid] < target:
# 下一轮搜索区间是 [mid + 1, right]
left = mid + 1
elif nums[mid] == target:
# 根据本题特殊性,看到等于 target 的元素,返回任意一个即可
return mid
else:
right = mid
return left
二分精品模板