Leetcode 35.搜索插入位置
1 题目描述(Leetcode题目链接)
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。
输入: [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 题解
二分法查找正确位置,关键在于边界的处理,循环限制条件最好为,这样会确保在退出循环的时候,避免了要思考到底是返回哪个值。于此题,由于要插入正确位置,那么应该将数组的长度加一来看待,规定右边界的值为数组长度,左边界值为0,接下来要判断二分过程中与左右边界值的关系:如果说明,目标位置一定在右侧,应该,反之,如果,则目标位置可能在处,也可能在左侧,应该。
class Solution:
def searchInsert(self, nums: List[int], target: int) -> int:
if not nums:
return 0
i, j = 0, len(nums)
while i < j:
mid = (i + j)//2
if target > nums[mid]:
i = mid + 1
else:
j = mid
return i
来源:CSDN
作者:就叫昵称吧
链接:https://blog.csdn.net/qq_39378221/article/details/104496753