Search Insert Position

题目描述

搜索插入位置:

给定一个排序数组和一个目标值,在数组中找到目标值,并且返回下标。如果目标值不存在,返回将它按序插入时对应的位置。

示例:

输入:[1, 3, 5, 6], 5
输出:2

解法

思想:

查找第一个大于等于target的值的下标

解法一: 二分法

  • 时间复杂度:O(logn)

  • 空间复杂度:O(1)

func searchInsert(nums []int, target int) int {
    left, right := 0, len(nums) - 1
    for left <= right {
        mid := left + (right - left) >> 1
        if nums[mid] == target {
            return mid
        }
        if nums[mid] > target {
            right = mid - 1
        } else {
            left = mid + 1
        }
    }
    return right + 1
}

Last updated

Was this helpful?