83.每日一练:搜索插入位置(力扣第35题)

问题描述

代码解决以及思想

cpp 复制代码
class Solution {
public:
    int searchInsert(vector<int>& nums, int target) {
        int left = 0;                      // 定义左边界
        int right = nums.size() - 1;       // 定义右边界

        while (left <= right) {            // 当左边界小于或等于右边界时,执行循环
            int middle = left + (right - left) / 2;  // 计算中间位置,避免整数溢出

            if (nums[middle] == target) {
                return middle;              // 如果找到目标元素,返回中间位置
            } else if (nums[middle] > target) {
                right = middle - 1;        // 目标在左半部分,更新右边界
            } else {
                left = middle + 1;         // 目标在右半部分,更新左边界
            }
        }
        
        return right + 1;  // 如果未找到目标元素,返回插入位置
    }
};

代码的思路是实现一个搜索插入位置的函数。它首先进行二分查找,尝试找到目标元素,如果找到则返回其索引;如果没找到,最后返回 right + 1,表示插入位置。这是因为 right 是最后一次更新的右边界,它指向小于目标元素的最后一个元素,所以 right + 1 是目标元素应该插入的位置。

写在最后:以上就是本篇文章的内容了,感谢你的阅读。如果感到有所收获的话可以给博主点一个赞哦。如果文章内容有遗漏或者错误的地方欢迎私信博主或者在评论区指出~

相关推荐
风筝在晴天搁浅16 分钟前
LeetCode CodeTop 82.删除排序链表中的重复元素Ⅱ
算法·leetcode·链表
1892280486118 分钟前
NV114固态MT29F16T08EWLEHD6-MES:E
人工智能·算法·缓存·性能优化
不会就选b22 分钟前
数据结构之链表OJ题(下)
数据结构·链表
Tairitsu_H27 分钟前
[LC优选算法#4] 滑动窗口 | 串联所有单词的⼦串 | 最⼩覆盖⼦串
c++·算法·滑动窗口
devilnumber29 分钟前
Java 二分查找(二分算法)详解 + 实战运用 + 核心坑点
java·开发语言·算法
洛水水31 分钟前
【力扣100题】84.字符串解码
算法·leetcode·职场和发展
小七在进步44 分钟前
数据结构:线性表之单链表
c语言·数据结构
MicroTech20251 小时前
量子隐形传态路线的瓶颈与突破,微算法科技(MLGO)以技术创新助力量子通信长距离组网
科技·算法·量子计算
洛水水1 小时前
【力扣100题】89.下一个排列
数据结构·算法·leetcode
洛水水1 小时前
【力扣100题】90.寻找重复数
算法·leetcode·职场和发展