LeetCode 35. 搜索插入位置 (C++实现)

1. 题目描述

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

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

2. 解题思路

首先定义左指针left和右指针right,然后取数组中间元素的值和target比较,如果中间元素的值大于target,则右指针指向中间元素,如果中间元素的值小于target,则左指针指向中间元素,直到中间元素等于target。最后,如果没有找到,则右指针的下一位就是插入的位置。

3. 代码实现

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)
            {
                right = middle - 1;
            }
            else if(nums[middle] < target)
            {
                left = middle + 1;
            }
            else
            {
                return middle;
            }
        }
        return right + 1;
    }
};
相关推荐
andlbds12 分钟前
Ubuntu20.04安装Pangolin遇到的几种报错的解决方案
开发语言·c++
JPC客栈32 分钟前
LeetCode面试经典 150 题(Java题解)
java·leetcode·面试
永不停转43 分钟前
QT 实现 C++ 数据类与 json 的转换
c++·qt
纪元A梦1 小时前
华为OD机试真题——数据分类(2025A卷:100分)Java/python/JavaScript/C++/C语言/GO六种最佳实现
java·javascript·c++·python·华为od·go·华为od机试题
爱的叹息1 小时前
关于 梯度下降算法、线性回归模型、梯度下降训练线性回归、线性回归的其他训练算法 以及 回归模型分类 的详细说明
人工智能·算法·回归·线性回归
炯哈哈1 小时前
【上位机——MFC】菜单类与工具栏
开发语言·c++·mfc·上位机
冠位观测者1 小时前
【Leetcode 每日一题】781. 森林中的兔子
数据结构·算法·leetcode
被AI抢饭碗的人1 小时前
算法题(130):激光炸弹
数据结构·算法
YuforiaCode2 小时前
第十四届蓝桥杯 2023 C/C++组 飞机降落
c语言·c++·蓝桥杯
天堂的恶魔9462 小时前
C++项目 —— 基于多设计模式下的同步&异步日志系统(5)(建造者模式)
c++·设计模式·建造者模式