LCR 068. 搜索插入位置


文章目录


1.题目

LCR 068. 搜索插入位置

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

请必须使用时间复杂度为 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

示例 4:

复制代码
输入: nums = [1,3,5,6], target = 0
输出: 0

示例 5:

复制代码
输入: nums = [1], target = 0
输出: 0

2.思路

  • 如果 nums[mid] 等于目标值,则直接返回 mid,表示找到了目标值的位置。
  • 如果 nums[mid] 大于目标值,说明目标值位于左半部分,此时将右边界 right 移动到 mid - 1
  • 如果 nums[mid] 小于目标值,说明目标值位于右半部分,此时将左边界 left 移动到 mid + 1

3.代码

c++ 复制代码
class Solution {
public:
    int searchInsert(vector<int>& nums, int target) {
        int left = 0, right = nums.size() - 1;  // 初始化左右边界
        
        // 使用二分查找
        while (left <= right) {
            // 计算中间位置,避免直接相加可能导致的溢出
            int mid = left + (right - left) / 2;
            
            // 如果中间元素等于目标值,返回该元素的下标
            if (nums[mid] == target) {
                return mid;
            } 
            // 如果中间元素大于目标值,说明目标值在左半部分
            else if (nums[mid] > target) {
                right = mid - 1;  // 缩小右边界到 mid 左边
            } 
            // 如果中间元素小于目标值,说明目标值在右半部分
            else {
                left = mid + 1;  // 缩小左边界到 mid 右边
            }
        }
        
        // 如果未找到目标值,返回 left 作为插入位置
        // left 指向第一个大于目标值的位置
        return left;
    }
};

相关推荐
贾斯汀玛尔斯1 分钟前
每天学一个算法--外部排序(External Sorting)
算法
故事和你912 分钟前
洛谷-算法2-2-常见优化技巧1
开发语言·数据结构·c++·算法·动态规划·图论
酉鬼女又兒4 分钟前
JavaLeetCode 第一题「两数之和」:从暴力枚举到一遍哈希表的正确与错误实现,详解HashMap核心知识点及常见陷阱
java·开发语言·数据结构·算法·leetcode·职场和发展·散列表
黎阳之光6 分钟前
视频孪生重构轨交数字孪生新范式|黎阳之光以自主核心技术破解落地难题
大数据·人工智能·算法·安全·数字孪生
云淡风轻~窗明几净10 分钟前
关于TSP的sealine算法与角谷猜想(2026-04-25)
数据结构·人工智能·算法·动态规划·模拟退火算法
wayz1111 分钟前
Day 13:朴素贝叶斯分类器
人工智能·算法·机器学习·朴素贝叶斯
前端摸鱼匠11 分钟前
【AI大模型春招面试题29】对比学习(Contrastive Learning)在大模型预训练中的应用?
人工智能·学习·算法·面试·大模型·求职招聘
探物 AI13 分钟前
【感知·单目测距】单目摄像头测距原理与前向碰撞预警(FCWS)实现
算法·目标检测·计算机视觉
gloomyfish14 分钟前
【洞察微瑕】YOLO11+QWEN-VL实现墙体裂缝检测与文字报告生成
人工智能·opencv·算法·计算机视觉
weixin_4130632123 分钟前
比较阅读理解opencv 和 LuminanceHDR中 色调映射Drago算法
opencv·算法·计算机视觉·hdr·色调映射