35. 搜索插入位置 简单

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

你可以假设数组中无重复元素。

示例 1:

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

示例 2:

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

示例 3:

输入: [1,3,5,6], 7
输出: 4

示例 4:

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

代码参考:

package main

import "fmt"

func main() {
    fmt.Println(searchInsert([]int{1, 3, 5, 6}, 5))
    fmt.Println(searchInsert([]int{1, 3, 5, 6}, 2))
    fmt.Println(searchInsert([]int{1, 3, 5, 6}, 0))
}

// 二分查找
func searchInsert(nums []int, target int) int {
    left, right := 0, len(nums)-1
    for left <= right {
        mid := (right + left) / 2
        switch {
        case nums[mid] > target:
            right = mid - 1
        case nums[mid] < target:
            left = mid + 1
        default:
            return mid
        }
    }
    return left
}
最后编辑: kuteng  文档更新时间: 2021-06-05 10:16   作者:kuteng