Java每日刷题之二分算法
34. 在排序数组中查找元素的第一个和最后一个位置 - 力扣(LeetCode)

转化
通过题目时间复杂度为O(logN),我们就可以联想到二分算法,但是我们前面学到的算法,是查找出,有序数组里的值,并不是求其中的范围,于是我们可以将找到这个值出现的范围转化为
通过二分法找到最左边下标以及最右边下标
思路:
1.找到最左边下标
第一步:根据mid的与target的大小进行left和right的移动,如图,当t<=mid,说明最小下标点一定在左边,所以移动right , 将right赋值给mid,重新进入循环,这样即可得到最左边的下标
2.细节处理
1.当right == left的同时,左端点就是这个点,所以循环条件为left < right
2.在mid范围内mid最大值比最小下标小1,所以left = mid+1;
3.当left和right中间无元素时,取中点方式的不同可能会造成死循环,分析图如下


4.得到值最左边下标
具体思路图如下

2.找到最右边下标

实现思路

细节处理
由于right 在 t < mid内,所以在t < mid内,想要left 与right 相交,就得right = mid -1;
取中间点的方法和上面找到最左边下标思路相同
注意
考虑没有target值和数组为空的情况
代码实现
class Solution {public int[] searchRange(int[] nums, int target) {int[] array = {-1,-1};if(nums.length == 0) return array;//找到左边界点int left = 0,right = nums.length-1;while(left<right){int mid = left +(right-left)/2;if(nums[mid] < target){left = mid+1;}else{right = mid;}}if(nums[left] != target) return array;else{array[0] = left;}//找到右边界点 left = 0;right = nums.length-1;while(left<right){int mid = left +(right-left+1)/2;if(nums[mid] > target){right = mid-1;}else{left = mid;}}if(nums[left] != target) return array;else{array[1] = right;} return array;}}
相关文章:
Java每日刷题之二分算法
34. 在排序数组中查找元素的第一个和最后一个位置 - 力扣(LeetCode) 转化 通过题目时间复杂度为O(logN),我们就可以联想到二分算法,但是我们前面学到的算法,是查找出,有序数组里的值,并不是求其中的范围&a…...
【mod分享】极品飞车9仿虚幻引擎模组,支持光追,高清纹理材质,体验一会虚幻引擎风格的极品9
各位好,今天小编给大家带来一款新的高清重置MOD,本次高清重置的游戏叫《极品飞车9最高通缉》。 《极品飞车:最高通缉》作为一款2005年的游戏,《极品飞车:最高通缉》的画面效果还是可以的,效果全开之后很不…...
【启程Golang之旅】并发编程构建简易聊天系统
欢迎来到Golang的世界!在当今快节奏的软件开发领域,选择一种高效、简洁的编程语言至关重要。而在这方面,Golang(又称Go)无疑是一个备受瞩目的选择。在本文中,带领您探索Golang的世界,一步步地了…...
微信小程序的开发流程
微信小程序开发流程 1. 注册微信小程序账号 进入微信公众平台(mp.weixin.qq.com),选择小程序的账号类型按照流程进行注册。注意每个邮箱只能注册一个账号。 2. 下载开发工具 使用账号登录微信公众平台,在开发->开发设置-&g…...
十分钟快速让你搞懂 Vue3 和 React 的区别
前言 Vue 3和 React是市面上目前非常受欢迎的两个前端框架。它们都采用了组件化的开发模式,使得开发者可以将复杂的应用拆分为多个小组件进行开发,从而提高了代码的可维护性和重用性。然而,虽然Vue 3和React都拥有各自的优点,但它…...
头歌——机器学习(线性回归)
文章目录 线性回归简述答案 线性回归算法答案 线性回归实践 - 波斯顿房价预测LinearRegression代码 利用sklearn构建线性回归模型示例代码如下: 代码 线性回归简述 简单线性回归 在生活中,我们常常能碰到这么一种情况,一个变量会跟着另一个变…...
AI驱动无人驾驶:安全与效率能否兼得?
内容概要 如今,人工智能正以其神奇的魔力驱动着无人驾驶的浪潮,带来了无数令人兴奋的可能性。这一领域的最新动态显示,AI技术在车辆的决策过程和实时数据分析中发挥着重要作用,帮助车辆更聪明地应对复杂的交通环境。通过实时监测…...
使用Git LFS管理大型文件
💓 博客主页:瑕疵的CSDN主页 📝 Gitee主页:瑕疵的gitee主页 ⏩ 文章专栏:《热点资讯》 使用Git LFS管理大型文件 引言 Git LFS 简介 安装 Git LFS 安装 Git 安装 Git LFS 配置 Git LFS 初始化 Git 仓库 指定需要使用…...
OpenAI终于正式上线搜索功能,搜索行业要变天了?
OpenAI 的 AI 搜索功能也将引发一场激烈的竞争。 各大科技公司都不会坐视不理,他们必然会纷纷加大对 AI 搜索技术的研发投入,试图在这个新兴的领域分一杯羹。这就像是一场没有硝烟的战争,各方势力都在暗中较劲,谁能笑到最后&…...
ssm《数据库系统原理》课程平台的设计与实现+vue
系统包含:源码论文 所用技术:SpringBootVueSSMMybatisMysql 免费提供给大家参考或者学习,获取源码看文章最下面 需要定制看文章最下面 目 录 目 录 I 摘 要 III ABSTRACT IV 1 绪论 1 1.1 课题背景 1 1.2 研究现状 1 1.3 研究内容…...
Java SpringBoot调用大模型AI构建AI应用
本文是一个用springboot 结合spring mvc 和spring ai alibaba 调用国产大模型通义千问的具体例子,按照这个做能够快速的搞定Java应用的调用。 然后就可以把这类应用泛化到所有的涉及到非结构化数据结构化的场景中。 Spring AI:简化Java中大模型调用的框…...
MySQL【二】
查询列 SELECT [ALL | DISTINCT ] * | 列名1[,……列名n] FROM 表名; 查询所有选课学生的学号,结果去除重复值 select distinct sno from sc; 选择行 查询满足条件的数据集 SELECT 字段列表 FROM 表名 WHERE 查询条件 查询不属于数学系或外国语系的学生全部信息 …...
SQL 常用语句
目录 我的测试环境 学习文档 进入数据库 基础通关测验 语句-- 查 展示数据库; 进入某个数据库; 展示表: 展示某个表 desc 查询整个表: 查询特定列: 范围查询 等于特定值 不等于 介于 特定字符查询 Li…...
前端埋点系统之如何用heatmap.js画网页热力图
Hello,大家好。在当今数字化时代,理解用户行为成为了企业成功的关键之一。随着互联网的发展,用户与网站、应用和产品的互动变得愈发复杂而多样化。在这样的背景下,埋点系统成为了洞察用户行为的重要工具之一。而其中的热力图分析&…...
CentOS 7系统下Redis Cluster集群一键部署脚本发布
引言 在大数据和云计算时代,Redis作为一款高性能的键值存储数据库,广泛应用于各种场景。然而,手动搭建Redis Cluster集群过程繁琐且容易出错。为了简化这一过程,本文提供了一个在CentOS 7系统下Redis Cluster集群的一键部署脚本,帮助开发者快速搭建Redis Cluster集群。 …...
自编以e为底的对数函数ln,性能接近标准库函数
算法描述: (1). 先做自变量x的范围检查,不能出现负数和0. 自己使用时,如果能通过其它途径保证自变量为正,那么可以省略这两个判断,提高速度。 (2). 根据IEEE 754浮点数的格式,,则 ln(x)kln(2)ln…...
Java中的日期时间
JDK8之前常用的日期时间类 System.currentTimeMillis():获取当前毫秒数(long类型) java.util.Date:通用Date类 import java.util.Date;Date date new Date(); // 空参构造器 System.out.println(date.getTime()); // 获取当前时…...
位置编码的表示
位置编码的表示位置编码的表示位置编码的表示位置编码的表示位置编码的表示...
0,国产FPGA(紫光同创)-新建PDS工程
国产FPGA正在蓬勃发展,紫光同创FPGA是大家竞赛时经常遇到的一款国产FPGA,本专栏从IP核开始一直到后续图像处理等。 开发板:盘古50K标准板 1,新建PDS工程 点击File(1),然后是New Projects&#…...
c++联合
结构体与联合体的区别 结构体(struct)中所有变量是“共存”的——优点是“有容乃大”,全面;缺点是struct内存空间的分配是粗放的,不管用不用,全分配。 而联合体(union)中是各变量是“互斥”的——缺点就是不够“包容”ÿ…...
Qwen3-TTS-VoiceDesign一文详解:speech_tokenizer作用机制与语音表征可视化
Qwen3-TTS-VoiceDesign一文详解:speech_tokenizer作用机制与语音表征可视化 1. 引言:从文字到声音的魔法转换 你有没有想过,为什么现在的AI语音合成听起来越来越像真人?为什么只需要用文字描述"温柔的成年女性声音"&a…...
GUI智能体MAI-UI-8B API调用全攻略:从基础到进阶实战
GUI智能体MAI-UI-8B API调用全攻略:从基础到进阶实战 1. 认识MAI-UI-8B:你的GUI自动化助手 MAI-UI-8B是一款专为图形用户界面(GUI)操作设计的智能体,它能像人类一样"看"屏幕、"理解"界面元素并执行操作。想象一下&…...
利用Python和快速傅里叶变换解析振动传感器数据:从趋势图到频谱分析的完整指南
1. 振动传感器数据分析入门指南 当你第一次拿到振动传感器采集的数据时,可能会被满屏的数字搞得一头雾水。别担心,我刚开始接触时也是这样。振动数据就像是一本用密码写成的日记,而Python和快速傅里叶变换(FFT)就是我们破译这些密码的神奇工具…...
手把手教你修复conda的HTTP 404错误:从错误日志分析到快速解决
深度解析Conda的HTTP 404错误:从日志分析到高效修复 当你满怀期待地输入conda create -n myenv python3.9准备创建新环境时,终端却无情地抛出一堆红色错误信息,最扎眼的就是那个requests.exceptions.HTTPError: 404 Client Error。这种突如其…...
Anaconda环境下Lumerical lumapi模块导入失败的3种修复方法(实测有效)
Anaconda环境下Lumerical lumapi模块导入失败的深度解决方案 当你满怀期待地在Anaconda环境中安装完Lumerical相关组件,准备大展拳脚时,突然遭遇ModuleNotFoundError: No module named lumapi这样的错误提示,确实令人沮丧。这种情况在重装系…...
Python数据库操作优化:从原理到实践
Python数据库操作优化:从原理到实践 1. 背景与动机 数据库操作是Web应用和数据处理系统的核心环节。优化数据库操作可以显著提升应用性能。本文将介绍Python数据库操作的优化技巧和最佳实践。 2. 核心原理 2.1 数据库性能瓶颈 网络延迟:应用与数据库的通…...
python汽车4s店的汽车租赁服务管理系统vue
目录功能模块分析租赁服务核心功能技术实现要点扩展功能建议项目技术支持源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作功能模块分析 用户管理模块 用户注册与登录:支持手机号、邮箱注册,集成短信验证码功能。权限…...
华三M-LAG实战:从零构建高可用数据中心网络
1. 为什么数据中心需要M-LAG技术? 刚接手数据中心网络建设项目时,我最头疼的就是如何实现高可用性。传统方案要么成本太高,要么切换速度达不到要求。直到接触华三的M-LAG技术,才发现原来跨设备链路聚合可以这么玩。 M-LAG全称Mult…...
用PyTorch从零搭建U-Net:手把手教你搞定遥感图像分割(附完整代码)
用PyTorch从零搭建U-Net:手把手教你搞定遥感图像分割(附完整代码) 遥感图像分割是计算机视觉领域的重要应用方向,尤其在农业监测、城市规划、灾害评估等场景中发挥着关键作用。对于刚接触深度学习实践的开发者来说,从…...
Dify工作流实战:用Agent节点串联多个MCP服务,让智能体同时操作数据库和外部工具
Dify工作流深度实战:用Agent节点构建多服务协同的智能体系统 在AI应用开发领域,Dify平台的工作流功能正在重新定义智能体的能力边界。不同于简单的单点工具调用,工作流允许开发者将多个MCP服务像乐高积木一样组合起来,创造出能够…...
