[优选算法专题三.二分查找——NO.20搜索插入位置 ]

题目链接:

35. 搜索插入位置

题目描述:

题目解答:


  • 算法思路:代码采用了二分查找算法,通过不断缩小查找范围,来确定目标值在数组中的位置或应插入的位置。二分查找的前提是数组是有序的,这样每次可以将查找范围缩小一半,时间复杂度为 O (log n),其中 n 是数组的长度。
  • 代码详解
    • 初始化指针int left = 0, right = nums.size() - 1;定义了左右指针,初始时,left指向数组的第一个元素,right指向数组的最后一个元素。
    • 二分查找循环while (left < right)是二分查找的循环条件,当left小于right时,说明查找范围仍然存在,继续循环。
    • 计算中间位置int mid = left + (right - left) / 2;计算中间位置mid,这种计算方式可以避免leftright较大时,left + right可能产生的整数溢出问题。
    • 更新指针 :如果nums[mid] < target,说明目标值在mid的右侧,将left更新为mid + 1;否则,说明目标值在mid的左侧或就是mid,将right更新为mid
    • 确定插入位置 :循环结束后,leftright相等,此时判断nums[left] < target是否成立,如果成立,说明目标值大于数组中的所有元素,应插入到right + 1的位置;否则,目标值应该插入到right的位置。
  • 示例 4:假设输入数组nums = [1, 3, 5, 6]target = 2
    • 初始时,left = 0right = 3mid = 1nums[1] = 3 > 2,则right = 1
    • 第二次循环,left = 0right = 1mid = 0nums[0] = 1 < 2,则left = 1
    • 循环结束,left = right = 1nums[1] = 3 > 2,返回right,即 1,也就是目标值 2 应该插入到数组的索引 1 处。
相关推荐
初晴や6 分钟前
【C++】图论:基础理论与实际应用深入解析
c++·算法·图论
李泽辉_6 分钟前
深度学习算法学习(五):手动实现梯度计算、反向传播、优化器Adam
深度学习·学习·算法
李泽辉_22 分钟前
深度学习算法学习(一):梯度下降法和最简单的深度学习核心原理代码
深度学习·学习·算法
꧁Q༒ོγ꧂25 分钟前
算法详解---大纲
算法
m0_6038887131 分钟前
Scaling Trends for Multi-Hop Contextual Reasoning in Mid-Scale Language Models
人工智能·算法·ai·语言模型·论文速览
Xの哲學34 分钟前
Linux io_uring 深度剖析: 重新定义高性能I/O的架构革命
linux·服务器·网络·算法·边缘计算
comli_cn41 分钟前
残差链接(Residual Connection)
人工智能·算法
Aaron15881 小时前
基于VU13P在人工智能高速接口传输上的应用浅析
人工智能·算法·fpga开发·硬件架构·信息与通信·信号处理·基带工程
予枫的编程笔记1 小时前
【论文解读】DLF:以语言为核心的多模态情感分析新范式 (AAAI 2025)
人工智能·python·算法·机器学习
im_AMBER1 小时前
Leetcode 99 删除排序链表中的重复元素 | 合并两个链表
数据结构·笔记·学习·算法·leetcode·链表