每日一题——搜索插入位置(二分查找)

简介: 每日一题——搜索插入位置(二分查找)

搜索插入位置

题目链接

思路(实现代码)

  • 看到这是一个无重复元素的升序排列数组,且题目规定时间复杂度为O(logn),那么我们可以很容易的想到这题要用二分查找算法
  • 如果目标值存在,那好办,就是普通的二分查找。但题目还要求,如果目标值不存在于数组,那么还要返回它将被按顺序插入的位置。那么怎么找到要插入的位置呢?
  • 先展示实现代码
int searchInsert(int* nums, int numsSize, int target){
    int left = 0;
    int right = numsSize - 1;
    while(left <= right)
    {
        int mid = (right - left) / 2 + left;    //为防止right + left发生整型溢出,故用此方法计算
        if(nums[mid] < target)
            left = mid + 1;
        else if(nums[mid] > target)
            right = mid - 1;
        else
            return mid;
    }
    return left;
}
  • 为什么就是直接插入在left位置呢,想了很久,感觉还是举例子画图更容易理解。
  • 首先我们需要明确,若已知数组中不存在目标元素target,那么进行最后一次while循环时,left必定等于right(如下图)

  • 通过图形的分析,我们确实可以确定若·targett不存在,那么left就是要插入的下标位置

PS:笔者对这题的思路可能也不是太准确,欢迎大家的斧正。


相关文章
|
人工智能 机器人 编译器
【C/C++】g++ 与 gcc的区别
【C/C++】g++ 与 gcc的区别
|
安全 关系型数据库 MySQL
MySQL权限管理大揭秘:用户、组、权限解析
MySQL权限管理大揭秘:用户、组、权限解析
1277 0
|
边缘计算 计算机视觉 异构计算
【YOLOv8改进 - 特征融合NECK】Slim-neck:目标检测新范式,既轻量又涨点
YOLO目标检测专栏探讨了模型优化,提出GSConv和Slim-Neck设计,以实现轻量级模型的高效检测。GSConv减小计算复杂度,保持准确性,适合实时任务。Slim-Neck结合GSConv优化架构,提高计算成本效益。在Tesla T4上,改进后的检测器以100FPS处理SODA10M数据集,mAP0.5达70.9%。论文和代码可在提供的链接中获取。文章还介绍了YOLOv8中GSConv的实现细节。更多配置信息见相关链接。
|
SQL 关系型数据库 MySQL
SQL Server、MySQL、PostgreSQL:主流数据库SQL语法异同比较——深入探讨数据类型、分页查询、表创建与数据插入、函数和索引等关键语法差异,为跨数据库开发提供实用指导
【8月更文挑战第31天】SQL Server、MySQL和PostgreSQL是当今最流行的关系型数据库管理系统,均使用SQL作为查询语言,但在语法和功能实现上存在差异。本文将比较它们在数据类型、分页查询、创建和插入数据以及函数和索引等方面的异同,帮助开发者更好地理解和使用这些数据库。尽管它们共用SQL语言,但每个系统都有独特的语法规则,了解这些差异有助于提升开发效率和项目成功率。
1929 0
|
Cloud Native
【刷题日记】824. 山羊拉丁文
本次刷题日记的第 40 篇,力扣题为:【刷题日记】824. 山羊拉丁文 ,简单
185 0
|
存储 Java 开发者
惊呆了!Java数据类型里竟藏着这些不为人知的秘密!
【6月更文挑战第13天】Java编程中的隐藏特性揭秘:整数类型超出范围会“回环”,如byte超过127变为-128;浮点数运算存在精度问题,如0.1+0.2不一定是0.3;char类型基于16位Unicode,可表示多种语言字符;包装类型与自动装箱拆箱简化了基本数据类型与对象间的转换。了解这些细节,助你深入理解Java数据类型。
127 3
|
移动开发 前端开发 iOS开发
HTML
HTML
270 0
|
机器学习/深度学习 传感器 人工智能
AI艺术创作领域
5月更文挑战第18天
|
Oracle 网络协议 关系型数据库
linux安装oracle client客户端远程连接数据库
  linux安装oracle client客户端远程连接数据库。   1.到oracle官网下载basic,sqlplus,devel三个软件包   oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.tar   oracle-instantclient11.2-sqlplus-11.2.0.4.0-1.x86_64.tar   oracle-instantclient11.2-devel-11.2.0.4.0-1.x86_64.tar   2.到root用户下创建一个oracle文件夹
687 0
|
消息中间件
如何解决消息队列的延时以及过期失效问题?消息队列满了以后怎么处理?
如何解决消息队列的延时以及过期失效问题?消息队列满了以后怎么处理?
1086 0

热门文章

最新文章