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;
    }
};
相关推荐
小白程序员成长日记5 分钟前
2025.12.01 力扣每日一题
算法·leetcode·职场和发展
爱装代码的小瓶子5 分钟前
【cpp知识铺子】map和set的前身-二叉搜索树
c++·算法
Embedded-Xin34 分钟前
Linux架构优化——spdlog实现压缩及异步写日志
android·linux·服务器·c++·架构·嵌入式
TL滕38 分钟前
从0开始学算法——第四天(练点题吧)
数据结构·笔记·学习·算法
[J] 一坚40 分钟前
华为OD、微软、Google、神州数码、腾讯、中兴、网易有道C/C++字符串、数组、链表、树等笔试真题精粹
c语言·数据结构·c++·算法·链表
我不会插花弄玉40 分钟前
c++入门基础【由浅入深-C++】
c++
多则惑少则明43 分钟前
【算法题4】找出字符串中的最长回文子串(Java版)
java·开发语言·数据结构·算法
不会编程的小寒1 小时前
C and C++
java·c语言·c++
迷途之人不知返1 小时前
二叉树题目
数据结构·算法
hewayou1 小时前
MFC +Com+ALT工程报 内存泄漏
c++·mfc·内存泄漏·com技术