【二分查找】力扣 34. 在排序数组中查找元素的第一个和最后一个位置

embedded/2024/12/3 3:03:38/

一、题目

在这里插入图片描述

二、思路

将题目转化为求解 target 和 target + 1 的查找。分别采用最基础的二分查找即可。

三、题解

java">class Solution {public int[] searchRange(int[] nums, int target) {int n = nums.length;int start = lowerBound(nums, target);if (start == n || nums[start] != target) {return new int[] {-1, -1};}// start 找到了,end 也一定存在,因此 end 无需检验int end = lowerBound(nums, target + 1) - 1;return new int[] {start, end};}/* 寻找大于等于 target 的第一个数,若存在 target 返回 left,即为第一个 target 的位置若有序数组中都是小于 target 的数,left 一直右移,最后 left = n,返回left,即为数组长度,tips: 返回的 left 不在下标范围内若有序数组中都是大于 target 的数,right 一直左移,left始终没有移动,最后 left = 0,tips: 返回的 left 在下标范围内,但所指向的数值与 target 不同*/public int lowerBound(int[] nums, int target) {int n = nums.length;int left = 0, right = n - 1;while (left <= right) { // 区间不为空int mid = left + (right - left)/ 2; // java 防止溢出if (nums[mid] < target) {left = mid + 1;} else {right = mid - 1;}}return left;// 最后结束时,right 在 left左边一个位置,right + 1 = left// left - 1 永远指向的是红色,right + 1 永远指向的是蓝色,left的位置就是要找}
}

http://www.ppmy.cn/embedded/142492.html

相关文章

家庭记账本小程序

私信我获取源码和万字论文&#xff0c;制作不易&#xff0c;感谢点赞支持。 摘 要 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户…

【2025最新计算机毕业设计】基于SpringBoot+Vue文化创意展示与交流平台【提供源码+答辩PPT+文档+项目部署】

作者简介&#xff1a;✌CSDN新星计划导师、Java领域优质创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流。✌ 主要内容&#xff1a;&#x1f31f;Java项目、Python项目、前端项目、PHP、ASP.NET、人工智能…

MySQL索引与分区:性能优化的关键

在开发过程中&#xff0c;随着数据量的不断增长&#xff0c;MySQL 查询的性能问题会逐渐显现。特别是在大数据量下&#xff0c;查询变得越来越慢&#xff0c;甚至可能导致系统崩溃。为了优化查询&#xff0c;MySQL 提供了 分区&#xff08;Partitioning&#xff09; 和 索引&am…

音视频-什么是帧,视频为什么要编码

帧就是动画中的一张图片&#xff0c;这相当于电影胶片上的一个镜头&#xff0c;一帧就是一幅静止的画面&#xff0c;连续的帧就形成了我们看到的动画和视频。 但是直接采集后没经过处理的视频&#xff0c;其实是没有办法真正在互联网上进行传输的。以一张1920乘1080的图片为例&…

家校通小程序实战教程03学生管理

目录 1 创建数据源2 搭建后台功能3 设置主列字段4 批量导入数据5 设置查询条件6 实现查询和重置总结 我们现在已经搭建了班级管理&#xff0c;并且录入了班级口令。之后就是加入班级的功能了。这里分为老师加入班级和学生家长加入班级。 如果是学生家长的话&#xff0c;在加入之…

python画图plt.close()一直闪烁

解决方法&#xff1a; import matplotlib matplotlib.use(Agg) # 设置后端为 Agg 在Matplotlib中&#xff0c;’后端’&#xff08;backend&#xff09;指的是用于实际绘制图形的底层图形库。Matplotlib支持多种后端&#xff0c;如’TkAgg’、’Qt5Agg’、’WXAgg’等&…

小车AI视觉交互--2.颜色跟随

一、实验目标 前面利用了颜色对象在摄像头画面的x&#xff0c;y不同位置通过云台进行跟踪&#xff0c;接下来我们可以在这个基础上修改下&#xff0c;x方向改为车身左右运动进行跟随&#xff0c;然后根据识别的图像外切圆大小进行前进的控制&#xff0c;通过二者叠加来整体控制…

PMP–一、二、三模、冲刺–分类–8.质量管理

文章目录 技巧五、质量管理 一模8.质量管理--质量管理计划--质量管理计划包括项目采用的质量标准&#xff0c;到底有没有满足质量需求&#xff0c;看质量标准即可。6、 [单选] 自项目开始以来&#xff0c;作为项目经理同事的职能经理一直公开反对该项目&#xff0c;在讨论项目里…