二分法查找解

85 阅读1分钟

搜索插入位置

题干

. - 力扣(LeetCode)

解题思路

  • 利用减治算法。
  • 该题的条件是找到有序数组中存在目标元素 target 的元素,那么我们可以从中间寻找。
  • 定义两个指针,left,right。
    • 因为要寻找插入条件,所以 right可以为nums.length.
  • 通过 target 与 nums[target]进行比较如果nums[mid] < target,那么 left = mid =1 ,否则 right = mid。 逐步缩小空间。

var searchInsert = function(nums: number[], target: number) {
    let left = 0,right = nums.length-1
    while(left < right){
        let mid = left + Math.floor((right - left) / 2)
        if(nums[mid] === target){
            return mid
        }
        if(nums[mid] < target){
            left = mid + 1
            // right = mid -1
        }else{
            right = mid - 1
        }
    }
    if(nums[left] < target){
        return left + 1
    }else{
        return left
    }

};
console.log(searchInsert([1, 3,5,6], 0));