【Day 27 】2021-06-05 - 35. 搜索插入位置

题目描述

35. 搜索插入位置

入选理由

暂无

题目地址

https://leetcode-cn.com/problems/search-insert-position

前置知识

暂无

题目描述

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

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

示例 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

我的回答

解法一

时空复杂度

时间复杂度:O(n)

空间复杂度: O(1)

var searchInsert = function (nums, target) {
    let ans = 0
    while (nums[ans] < target) {
        ans++
    }
    return ans
};
 

解法二

时间复杂度:O(logn)

空间复杂度: O(1)

二分法

var searchInsert = function (nums, target) {
    let left = 0
    let right = nums.length - 1
    while (left <= right) {
        let mid = (left + right) >> 1
        if (nums[mid] < target) {
            left = mid + 1
        } else if (nums[mid] > target) {
            right = mid - 1
        } else {
            return mid
        }
    }
    return left
};

参考回答