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

35.搜索插入位置

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

请必须使用时间复杂度为 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

提示:

  • 1 <= nums.length <= 104
  • -104 <= nums[i] <= 104
  • nums 为 无重复元素 的 升序 排列数组
  • -104 <= target <= 104

题目链接:35. 搜索插入位置 - 力扣(LeetCode)

思路:二分查找,当元素存在返回元素下标,当元素不存在返回left下标,因为最终left=right + 1; left下标元素大于target.

代码:

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) / 2;if(nums[mid] == target){return mid;}else if(target > nums[mid]){left = mid + 1;}else{right = mid - 1;}mid = (left + right) / 2;}return left;}
};


http://www.mrgr.cn/news/19909.html

相关文章:

  • JSON Hero:视图查看更简单!!【送源码】
  • 【高等代数笔记】(18)N阶行列式
  • Linux教程8:文本编辑命令vi
  • 【JAVA】第三天
  • Java-互斥锁死锁释放锁
  • Leetcode—72. 编辑距离【中等】
  • 【IPV6从入门到起飞】3-域名解析动态IPV6(阿里云)
  • 栈和队列——用栈实现队列
  • Python使用turtle画笑脸
  • 【C++ 面试 - STL】每日 3 题(八)
  • 第11讲 回环检测
  • 【为项目做准备】Linux操作系统day2
  • 整形提升-C语言
  • 2157. 优秀的拆分(power)
  • Linux学习笔记5 值得一读,Linux(ubuntu)软件管理,搜索下载安装卸载全部搞定!(上)
  • 【重学 MySQL】八、MySQL 的演示使用和编码设置
  • ECCV2024|RegionDrag:基于区域的图像编辑方法,通过手动拖拽实现图像编辑!
  • hadoop dfs web页面访问增加鉴权
  • 谈谈AI领域的认知误区、机会点与面临的挑战
  • 计算机为啥搞出那么多进制?