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 是目标元素应该插入的位置。

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

相关推荐
shehuiyuelaiyuehao10 小时前
算法32,连续数组,前缀和+哈希表
算法·leetcode·职场和发展
五_谷_丰_登10 小时前
平衡二叉树(AVL)讲解二
数据结构·c++
程序员贺加贝10 小时前
报表大 IN 优化:一条 product_profile 超大 IN SQL 背后的报表任务治理
算法·性能优化
知无不研11 小时前
std::function在使用时遇到的问题
c++·算法·st·function
薛定e的猫咪11 小时前
(IEEE Transactions 2025)自适应元强化学习动态柔性作业车间调度框架
网络·人工智能·算法
码场老菜鸟11 小时前
C++ 指针的深度理解与应用
java·c++·算法
fpcc11 小时前
数据结构和算法—最短路径的算法
数据结构·算法
茉莉玫瑰花茶12 小时前
RAG 数据检索
人工智能·算法·机器学习
speop12 小时前
hell-gpu| TASK01-2
linux·运维·算法
Mr. zhihao12 小时前
从数组到 B+ 树:一棵树的进化史
数据结构·innodb·b+树