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

算法第八天:leetcode 35.搜索插入位置

一、搜索插入位置

  该题的题目链接如下所示,看题解前先点击或复制下面链接进入力扣做题哦,做题后看会更好哦。       https://leetcode.cn/problems/search-insert-position/

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

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

 本题使用双指针的思想解题,以下是提供两种代码如c++、Java:

1.c++的具体代码如下

int searchInsert(vector<int>& nums, int target) {int left=0, right=nums.size()-1;while(left<=right){int mid=left+(right-left)/2;if(nums[mid]==target){return mid;}if(nums[mid]>target){ //向左开始查找right=mid-1;}else{ //向右开始查找left=mid+1;}}return left;
}

2.使用Java语言的具体代码

public int searchInsert(int[] nums, int target) {int left=0;int right=nums.length-1, ans=nums.length;while(left<=right){int mid=left+(right-left)/2; //计算中间值if(target<=nums[mid]){ans=mid;right=mid-1;}else{left=mid+1;}}return ans;
}

二、搜索插入位置的基本思路

  1.  先定义起始位置left和末端位置right,while循环条件为left<=right;
  2. 找中间值mid,和目标值比对,如果目标值小于中间值,末端位置right移到中间值mid的前一个位置,反之,类同。这需要广大读者反复思考。
  3. 返回结果值ans。

    感谢各位读者的阅读与支持,您的支持是我前进的动力!我希望我的博文能够带给您有用的算法知识和启发。如果您想了解更多的算法知识,请点击我的专栏数据结构与算法进行学习。希望这些大家有帮助,谢谢各位读者的支持!!!

相关文章:

  • TVBOX 最新版下载+视频源教程
  • 深入理解Java中的并发编程
  • 【LeetCode215】数组中的第K个最大元素
  • 爆赞!GitHub首本Python开发实战背记手册,标星果然百万名不虚传
  • Ant-Design-Vue动态表头并填充数据
  • vue3写一个定时器
  • Kantana和The Sandbox联手打造元宇宙娱乐的未来
  • Android开启HTTP服务
  • 微服务必备容器化技术
  • LUA移植到STM32F4,移植REPL,通过RTT Viewer交互
  • GraogGNSSLib学习
  • 医学人工智能在“免疫组化”领域的最新研究进展|顶刊速递·24-06-19
  • 美业人专用宝藏系统、Java收银系统源码分享-美业SAAS系统的应用价值分析
  • 关于INCA的几个实用功能
  • Top10在线音频剪辑软件,你了解几款?(免费分享)
  • 【跃迁之路】【477天】刻意练习系列236(2018.05.28)
  • Android系统模拟器绘制实现概述
  • Consul Config 使用Git做版本控制的实现
  • Fastjson的基本使用方法大全
  • Java-详解HashMap
  • MobX
  • PHP那些事儿
  • Python学习之路13-记分
  • QQ浏览器x5内核的兼容性问题
  • Redis 中的布隆过滤器
  • Redis字符串类型内部编码剖析
  • SpiderData 2019年2月13日 DApp数据排行榜
  • 翻译--Thinking in React
  • 分类模型——Logistics Regression
  • 基于HAProxy的高性能缓存服务器nuster
  • 爬虫进阶 -- 神级程序员:让你的爬虫就像人类的用户行为!
  • 浅析微信支付:申请退款、退款回调接口、查询退款
  • Java数据解析之JSON
  • ​Java基础复习笔记 第16章:网络编程
  • # Swust 12th acm 邀请赛# [ K ] 三角形判定 [题解]
  • #162 (Div. 2)
  • #Datawhale AI夏令营第4期#AIGC方向 文生图 Task2
  • #宝哥教你#查看jquery绑定的事件函数
  • #我与Java虚拟机的故事#连载01:人在JVM,身不由己
  • $分析了六十多年间100万字的政府工作报告,我看到了这样的变迁
  • (04)Hive的相关概念——order by 、sort by、distribute by 、cluster by
  • (2)(2.10) LTM telemetry
  • (day 2)JavaScript学习笔记(基础之变量、常量和注释)
  • (JS基础)String 类型
  • (Matlab)基于蝙蝠算法实现电力系统经济调度
  • (附源码)ssm高校实验室 毕业设计 800008
  • (附源码)ssm旅游企业财务管理系统 毕业设计 102100
  • (十二)Flink Table API
  • (转载)CentOS查看系统信息|CentOS查看命令
  • (最全解法)输入一个整数,输出该数二进制表示中1的个数。
  • ******IT公司面试题汇总+优秀技术博客汇总
  • .cn根服务器被攻击之后
  • .net framework 4.8 开发windows系统服务
  • .NET Standard 支持的 .NET Framework 和 .NET Core
  • .Net中的设计模式——Factory Method模式