求star

开源不易,喜欢请点个star吧

Ocean Han
291 字
1 分钟
Leetcode->搜索插入位置
2022-06-16

题目:cherries:#

给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。

请必须使用时间复杂度为 O(log n) 的算法。

示例 1:

输入: nums = [1,3,5,6], target = 5
输出: 2

示例 2:

输入: nums = [1,3,5,6], target = 2
输出: 1

示例 3:

输入: nums = [1,3,5,6], target = 7
输出: 4

提示:

  • 1 <= nums.length <= 104
  • -104 <= nums[i] <= 104
  • nums 为 无重复元素 的 升序 排列数组
  • -104 <= target <= 104

解题:tada:#

TIP

​ 由于这道题的前提已经是一个排序数组,所以问题就变的非常简单

①直接遍历#

/**
 * @param {number[]} nums
 * @param {number} target
 * @return {number}
 */
var searchInsert = function(nums, target) {
    for(let i=0;i<nums.length;i++){
        if(nums[i] >= target){
            return i;
        }
    }
    return nums.length;
};

②二分法#

/**
 * @param {number[]} nums
 * @param {number} target
 * @return {number}
 */
var searchInsert = function (nums, target) {
    let l = 0
    let r = nums.length - 1

    while(l <= r) {
        let mid = l + ((r - l) >> 1)

        if (nums[mid] === target) {
            return mid
        } else if (nums[mid] < target) {
            l = mid + 1
        } else if (nums[mid] > target) {
            r = mid - 1
        }
    }
    return l

};
Leetcode->搜索插入位置
https://blog.oceanh.top/posts/algorithm/搜索插入位置/
作者
Ocean Han
发布于
2022-06-16
许可协议
CC BY-NC-SA 4.0
最后修改时间
2024-08-10 10:08:49