当前位置: 首页 > news >正文

专题三搜索插入位置

1.题目

题目分析:

 给一个目标值,然后要在排序的整数数组中,找到跟目标值一样的,如果没有就把这个值插入进去,然后返回插入后的下标。

2.算法原理

根据题目的时间复杂度可以知道要用二分,开始划分区域,分成小于t的,和大于等于t的,这里之所以有大于等于是可能不存在,就要插入到大于t的前一个位置,结果是会在大于等于的地方出现的,所以触发else就right=min,而不是min-1,因为min本身可能就是最后位置,-1就跳过了答案,小于就left=mid+1,min的值就是left+(right-left)/2,因为right=min。最后还需要注意,有的情况是出了边界,而二分最多到最后一个位置,所以需要判断是否相等跟t,不相等就说明在下一个位置。

3.代码实现

class Solution {
public:
    int searchInsert(vector<int>& nums, int target) {
        int left=0,right=nums.size()-1;
        while(left<right)
        {
            int min=left+(right-left)/2;
            if(nums[min]<target) left=min+1;
            else right=min;
        }
        if(nums[right]<target) return right+1;
        return right;
    }
};

相关文章:

  • 新矩阵(信息学奥赛一本通-2041)
  • 文生图技术的演进、挑战与未来:一场重构人类创造力的革命
  • Qt启动新窗口
  • Android Dagger2 框架依赖图构建模块深度剖析(三)
  • 【react】react中的<></>和React Fragment的用法及区别详解
  • 使用DeepSeek AI开发智能问答网页应用
  • 分布式架构下的RPC解决方案
  • TCP 采用三次握手建立连接的原因
  • linux系统安装和激活conda
  • 【2025.3.13】记一次双系统笔记本加装固态硬盘记录 linux扩容 linux更换/home和/opt所在硬盘 windows无法调整亮度
  • ssm:商业异常处理流程
  • 日志Python安全之SSTI——Flask/Jinja2
  • 双3060、Ubuntu22.04、cuda12.8安装deepseek 32b-Q8
  • 面向对象Demo02
  • Python 实现大文件的高并发下载
  • 躲藏博弈中的策略优化:整合历史数据、概率论与博弈论
  • docker pull 镜像问题
  • RGV调度(四)--排队算法
  • 智能电话机器人的技术原理是什么?AI语音机器人评判标准是什么?
  • 数学建模之数学模型-3:动态规划
  • 西班牙政府排除因国家电网遭攻击导致大停电的可能
  • 巴方:印度上周导弹袭击造成至少40名平民死亡
  • 地下5300米开辟“人造气路”,我国页岩气井垂深纪录再刷新
  • 第四届长三角国际应急博览会开幕,超3000件前沿装备技术亮相
  • 习近平出席中国-拉美和加勒比国家共同体论坛第四届部长级会议开幕式
  • 某博主遭勒索后自杀系自导自演,成都警方立案调查