Skip to content

35. 搜索插入位置 #71

Open
Open
@Geekhyt

Description

@Geekhyt

原题链接

二分查找

先来看下有序数组的二分查找。

const search = function(nums, target) {
    let start = 0
    let end = nums.length - 1
    while (start <= end) {
        const mid = start + ((end - start) >> 1)
        if (nums[mid] === target) return mid

        if (nums[mid] < target) {
            start = mid + 1
        } else {
            end = mid - 1
        }
    }
    return -1
}
  1. 题目给定一个排序数组,还有一个目标值,要直接想到用二分查找来解题
  2. 只不过题目增加了条件,如果找到值返回其索引,如果没有找到的话,需要返回它按顺序插入的位置 start
const searchInsert = function(nums, target) {
    let start = 0
    let end = nums.length - 1
    while (start <= end) {
        const mid = start + ((end - start) >> 1)
        if (nums[mid] === target) return mid

        if (nums[mid] < target) {
            start = mid + 1
        } else {
            end = mid - 1
        }
    }
    return start
}
  • 时间复杂度:O(logn)
  • 空间复杂度:O(1)

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions