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

LeetCode 力扣 热题 100道(十五)搜索插入位置(C++)

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

请必须使用时间复杂度为 O(log n) 的算法。

代码如下所示:

class Solution {
public:int searchInsert(vector<int>& nums, int target) {int left = 0;int right = nums.size() - 1;while (left <= right) {int mid = left + (right - left) / 2; if (nums[mid] == target) {return mid; } else if (nums[mid] < target) {left = mid + 1;  } else {right = mid - 1; }}return left;}
};
  • int left = 0;int right = nums.size() - 1;:初始化左右指针,分别指向数组的头部和尾部。
  • while (left <= right):这个循环会持续进行,直到找到目标值或确定目标值的插入位置。
  • int mid = left + (right - left) / 2;:计算中间位置。使用 left + (right - left) / 2 来避免 left + right 可能出现的溢出问题。
  • if (nums[mid] == target):如果 mid 位置的元素等于目标值,直接返回该索引。
  • else if (nums[mid] < target):如果 mid 位置的元素小于目标值,目标值应该在 mid 右侧,更新 left = mid + 1
  • else:如果 mid 位置的元素大于目标值,目标值应该在 mid 左侧,更新 right = mid - 1
  • return left;:如果循环结束时没有找到目标值,left 将指向目标值应该插入的位置。
http://www.lryc.cn/news/498156.html

相关文章:

  • 【035】基于51单片机俄罗斯方块游戏机【Proteus仿真+Keil程序+报告+原理图】
  • NAT traversal 原理 | TCP / UDP/ P2P
  • 如何成长为一名工程技术经理
  • GEE开发之下载海拔、坡度、坡向数据
  • gozero项目迁移与新服务器环境配置,包含服务器安装包括go版本,Nginx,项目配置包括Mysql,redis,rabbit,域名
  • Scala正则表达式全面教程
  • 伺服电机为什么会变慢?
  • 61 基于单片机的小车雷达避障及阈值可调
  • 微信小程序之手机归属地查询
  • ElementUI 问题清单
  • DVWA靶场——XSS(Stored)
  • Spring框架中的Bean是线程安全的吗?
  • uniapp远程摄像头流界面上显示
  • elasticSearch(一):elasticSearch介绍
  • 基于 RWKV 的视觉语言模型 VisualRWKV 被 COLING 2025 接收!
  • 输出九九乘法表:JAVA
  • kube-proxy的iptables工作模式分析
  • xiaolin coding 图解 MySQL笔记——锁篇
  • 11-SpringCloud Alibaba-Seata处理分布式事务
  • 更换 Git 项目的远程仓库地址(五种方法)
  • 3大模块助力学生会视频自动评审系统升级
  • 鸿蒙开发——使用ArkTs处理XML文本
  • 【Linux】文件查找 find grep
  • Go学习笔记之运算符号
  • npm : 无法加载文件 D:\nodejs\npm.ps1,因为在此系统上禁止运行脚本
  • YOLOv8-ultralytics-8.2.103部分代码阅读笔记-torch_utils.py
  • Java中的数据存储结构解析与应用
  • 【链表】力扣 141. 环形链表
  • Hbase整合Mapreduce案例2 hbase数据下载至hdfs中——wordcount
  • diff算法