LeetCode 35. 搜索插入位置

127 阅读1分钟

解析

解法1

O(log n)的时间复杂度算法,决定了查找算法是二分查找。其他的就是判断。

/**
 * @param {number[]} nums
 * @param {number} target
 * @return {number}
 */
var searchInsert = function(nums, target) {
    //logn的是二分查找
    let low = 0,high = nums.length-1
    //未查找到的时候的插入下标值
    let noFindIndex = 0
     while (low <= high) {
          let mid = Math.floor((low + high) / 2);
          //每次保存计算的中间值
          noFindIndex = mid
          if(target === nums[mid]){
              //查找到的下标
              return mid
          }else if(target < nums[mid]){
               high = mid - 1
          }else if(target > nums[mid]){
               low = mid + 1
          }
     }
     //如果没有找到目标值,noFindIndex就是最后一次中间值
     if(target < nums[noFindIndex]){
       	 //未找到的值,目标值 < 最后一次中间下标的值,就返回noFindIndex
         return noFindIndex
     }else {
         //未找到的值,目标值 > 最后一次中间下标的值,就返回noFindIndex+1
         return noFindIndex + 1
     }  
};