searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

搜索插入位置-算法学习

2023-07-12 04:00:44
2
0

题目详情:
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
请必须使用时间复杂度为 O(log n) 的算法。

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

解题思路:
O(log n)时间复杂度的算法,那就是考到了二分查找的思想了。
首先,定义指针 left 指向数组开头,指针 right 指向数组末尾。

然后,进入循环,当 left 小于等于 right 时,执行以下操作:

计算中间位置的索引 mid,使用 Math.floor 函数取整。
如果中间位置的元素与目标值相等,则直接返回 mid。
如果中间位置的元素小于目标值,则说明目标值在右半部分,将 left 更新为 mid + 1。
如果中间位置的元素大于目标值,则说明目标值在左半部分,将 right 更新为 mid - 1。
最终循环结束后,返回 left 的值作为插入位置。

代码实现:
function searchInsert(nums, target) {
    let left = 0;
    let right = nums.length - 1;

    while (left <= right) {
        const 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;
}

// 示例输入
const nums = [1, 3, 5, 6];
const target = 5;

// 调用函数并输出结果
console.log(searchInsert(nums, target));

0条评论
作者已关闭评论
t****m
98文章数
1粉丝数
t****m
98 文章 | 1 粉丝
t****m
98文章数
1粉丝数
t****m
98 文章 | 1 粉丝
原创

搜索插入位置-算法学习

2023-07-12 04:00:44
2
0

题目详情:
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
请必须使用时间复杂度为 O(log n) 的算法。

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

解题思路:
O(log n)时间复杂度的算法,那就是考到了二分查找的思想了。
首先,定义指针 left 指向数组开头,指针 right 指向数组末尾。

然后,进入循环,当 left 小于等于 right 时,执行以下操作:

计算中间位置的索引 mid,使用 Math.floor 函数取整。
如果中间位置的元素与目标值相等,则直接返回 mid。
如果中间位置的元素小于目标值,则说明目标值在右半部分,将 left 更新为 mid + 1。
如果中间位置的元素大于目标值,则说明目标值在左半部分,将 right 更新为 mid - 1。
最终循环结束后,返回 left 的值作为插入位置。

代码实现:
function searchInsert(nums, target) {
    let left = 0;
    let right = nums.length - 1;

    while (left <= right) {
        const 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;
}

// 示例输入
const nums = [1, 3, 5, 6];
const target = 5;

// 调用函数并输出结果
console.log(searchInsert(nums, target));

文章来自个人专栏
js
57 文章 | 1 订阅
0条评论
作者已关闭评论
作者已关闭评论
0
0