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

C/C++---------------LeetCode第35. 搜索插入位置

插入的位置

  • 题目及要求
  • 二分查找
  • 在main内使用

题目及要求

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

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

二分查找

思路:使用二分查找,首先初始化左右指针,然后在每一次循环中,计算中间位置 mid,并与目标值进行比较。如果中间位置的元素等于目标值,则返回该位置,如果中间位置的元素大于目标值,则将右指针移动到 mid - 1 的位置,如果中间位置的元素小于目标值,则将左指针移动到 mid + 1 的位置。通过不断变化搜索范围,最终找到目标值的索引位置或应该插入的位置

class Solution {
public:int searchInsert(vector<int>& nums, int target) {int left=0,right=nums.size()-1;while(left<=right){int mid=(left+right)/2;if(nums[mid]==target){return mid; //返回目标值的索引}else if(nums[mid]>target){right=mid-1;}else{left=mid+1;}}return left;  //返回插入的位置}
};

在main内使用

int main() {vector<int> nums = {1, 3, 5, 6};int target = 4;Solution solution;int index = solution.searchInsert(nums, target);if (nums[index] == target) {cout << "目标值 " << target << " 的索引为 " << index << endl;} else {cout << "目标值 " << target << " 应该插入到索引为 " << index << " 的位置上" << endl;}return 0;
}
http://www.lryc.cn/news/247507.html

相关文章:

  • 网络安全--基于Kali的网络扫描基础技术
  • C语言——求π的近似值
  • 如何使用ffmpeg转换图片格式
  • 11 动态规划解最后一块石头的重量II
  • LeetCode算法题解(动态规划,股票买卖)|LeetCode121. 买卖股票的最佳时机、LeetCode122. 买卖股票的最佳时机 II
  • python实验3 石头剪刀布游戏
  • 米贸搜|如何设置 Facebook 转换 API + 事件重复数据删除
  • python每日一题——11滑动窗口最大值
  • 【C++ 程序设计入门基础】- 第3节-循环结构01
  • 人工智能原理复习--知识表示(一)
  • 网络运维与网络安全 学习笔记2023.11.28
  • Rust开发——数据对象的内存布局
  • mySQL踩坑记录
  • 【Java】使用 IDEA 快速生成 SpringBoot 模块
  • 2023网络安全产业图谱
  • 一则 MongoDB 副本集迁移实操案例
  • 2022年03月 Scratch图形化(四级)真题解析#中国电子学会#全国青少年软件编程等级考试
  • 传音荣获2023首届全国人工智能应用场景创新挑战赛“智能家居专项赛”三等奖
  • SQL注入-SQL注入过程
  • 选择更灵活的设计工具:SOLIDWORKS 软件网络版与单机版的比较
  • Go语言中获取协程ID
  • CH58x-BLE 程序阅读笔记
  • ST53xx 系列是一种高精度、高输入电压、低静态电流、高速度、低压差线性稳压器
  • 麻雀搜索优化算法MATLAB实现,SSA-BP网络
  • 142. 环形链表 II --力扣 --JAVA
  • 深入浅出 Vue 中的插槽 slot
  • postgreSQL 查询所有模式的语句
  • pandas教程:Introduction to scikit-learn scikit-learn简介
  • Linux配置路由功能及添加静态路由
  • 什么是Geo Trust OV证书