DOJO004

  • Dashool 創辦人
  • 喜歡調酒
  • Rails、Nextjs、TypeScript

來刷 LeetCode 吧! 16 35. Search Insert Position

LeetCode

題目分析 

給一個排序後 array、一個 target,回傳 target 在 array 中的位置。 
若 array 找不到 target,回傳 target 應該插入在 array 中的位置。 
第一直覺 
  • 遍歷 nums
  • 若找到 nums[i] ≥ target 代表為 target 應插入的位置
  • 若遍歷完未找到,代表 target 大於 nums 所有元素,應放在最後
var searchInsert = function (nums, target) {
  for (let i = 0; i < nums.length; i++) {
    if (nums[i] >= target) {
      return i;
    }
  }
  return nums.length;
};

二分法

  • 找到 nums 的中間點
  • 對中間點進行判斷
  • 二分法的時間複雜度為 O( log n ),線性搜索為 O( n )
var searchInsert = function (nums, target) {
  // 找到 nums 的頭、尾
  left = 0;
  right = nums.length - 1;

  // 
  while (left <= right) {
    mid = Math.floor((left + right) / 2);
    if (nums[mid] === target) {
      return mid;
    } else if (nums[mid] < target) {
      left = mid + 1;
    } else {
      right = mid - 1;
    }
  }
  return left;
};

版權所有 © 2023 DOJO004

Deployed on Zeabur