二分法运用,查找目标位置与应该插入的索引

351 阅读1分钟

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

请必须使用时间复杂度为 O(log n) 的算法。

class Solution:
    def searchInsert(self, nums: List[int], target: int) -> int:
        low = 0
        high = len(nums) - 1
        while low <= high:
            middle = int((low + high) / 2)
            if nums[middle] == target:
                return middle
            if target > nums[middle]:
                low = middle + 1
                index = low
            if target < nums[middle]:
                high = middle - 1
                index = middle
        return index