35. Search Insert Position

114 阅读1分钟

题目描述

leetcode-cn.com/problems/se…

分析

利用二分查找找到为止,注意这边 mid 默认是数组长度 n,也就是说,如果没找到为止,就插到最后~

这是一道典型的二分查找中的01问题,即查找第一个 1,也就是

算法

二分查找

过程

因为数组中的元素是不重复的

找到第一个 k <= target,要通过二分中的 nums[mid] <= target 的条件成立时,记录一次当前 mid,将它的值更新到 ans

代码

/**
 * @param {number[]} nums
 * @param {number} target
 * @return {number}
 */
var searchInsert = function(nums, target) {
    let l = 0, r = nums.length - 1, ans = nums.length
    while (l <= r) {
        const mid = l + ((r - l) >> 1)
        if (nums[mid] >= target) {
            ans = mid
            r = mid - 1
        } else {
            l = mid + 1
        }
    }
    
    return ans
};