[路飞]搜索插入位置

70 阅读1分钟

记录 1 道算法题

搜索插入位置

leetcode-cn.com/problems/se…


要求:提供一个数组和数字,返回数字在数组里的位置,如果没有就输出 push 到数组后的下标。(数组是升序的)

使用二分查找,由于数组是升序的,所以我们可以用中间的数判断,我们要查找的数在左边还是右边,直到找到或者找不到。

    function searchInsert(nums, target) {]
        // 左右边界
        let a = 0
        let b = nums.length - 1
        // 默认给最后一位,如果查不到就是 push
        let res = nums.length
        
        while(a <= b) {
            // 取中间值
            const mid = (a + b) >> 1
            const n = nums[mid]
            if (n < target) {
                a = mid + 1
            } else {
                // 右边界向左缩小的时候是我们要记录的结果
                res = mid
                b = mid - 1
            }
        }
        
        return res
    }