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

2025年- H62-Lc170--34.在排序数组中查找元素的第一个和最后一个位置(2次二分查找,标记向左寻找,标记向右寻找)--Java版

1.题目描述

在这里插入图片描述

2.思路

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.代码实现

public class H34 {public int[] searchRange(int[] nums, int target) {int start = findFirst(nums, target);int end = findLast(nums, target);return new int[]{start, end};}// 查找第一个出现的位置public int findFirst(int[] nums, int target) {int left = 0;int right = nums.length-1;int res = -1;//“这个值在数组中不存在,没有对应的下标。”默认值返回-1while (left <= right) {int mid = left + (right - left) / 2;if (nums[mid] == target) {res = mid;right = mid - 1;//向右继续查找,你不确定这是不是第一个 8,还可能在它左边还有 8!所以,为了“继续向左边找”,我们要缩小右边界:} else if (target > nums[mid]) {left = mid + 1;} else{right = mid - 1;}}return res;}// 查找最后一个出现的位置public int findLast(int[] nums, int target) {int left = 0;int right = nums.length-1;int res = -1;while (left <= right) {int mid = left + (right - left) / 2;if (nums[mid] == target) {res = mid;//因为这是右边区间,所以我们要往左边找还有没有该元素出现left = mid + 1;} else if (target > nums[mid]) {left = mid + 1;} else {right = mid - 1;}}return res;}public  static void main(String[] args){H34 test=new H34();int[] nums={5,7,7,8,8,10};int target=10;int[] res=test.searchRange(nums,target);System.out.print("["+res[0]+","+res[1]+"]");}
}
http://www.xdnf.cn/news/743095.html

相关文章:

  • 记一次idea中lombok无法使用的解决方案
  • 设计模式——简单工厂模式(创建型)
  • 【深度学习】16. Deep Generative Models:生成对抗网络(GAN)
  • Windows上用FFmpeg采集摄像头推流 → MediaMTX服务器转发流 → WSL2上拉流播放
  • GIS常见数据及主要应用综述:类型解析、应用案例与未来趋势全景解读
  • 通过mqtt 发布温湿度
  • 【机器学习基础】机器学习入门核心算法:XGBoost 和 LightGBM
  • 江科大IIC读取MPU6050hal库实现
  • C++中 newdelete 与 mallocfree 的异同详解
  • 【深度学习】14. DL在CV中的应用章:目标检测: R-CNN, Fast R-CNN, Faster R-CNN, MASK R-CNN
  • 【Linux 学习计划】-- 进程地址空间
  • 使用 Let‘s Encrypt 和 Certbot 为 Cloudflare 托管的域名申请 SSL 证书
  • Reactor 和 Preactor
  • LeetCode - 876. 链表的中间结点
  • Mybatis Plus JSqlParser解析sql语句及JSqlParser安装步骤
  • 第六十二节:深度学习-加载 TensorFlow/PyTorch/Caffe 模型
  • 【HW系列】—溯源与定位—Linux入侵排查
  • day07
  • c/c++的opencv车牌识别
  • vscode不满足先决条件问题的解决——vscode的老版本安装与禁止更新(附安装包)
  • 5.2 初识Spark Streaming
  • 进程间通信IV System V 系列(linux)
  • 机器学习与深度学习06-决策树02
  • C++23 已弃用特性
  • 前端面试准备-4
  • 细说C语言将格式化输出打印至标准输出流的函数 printf、_printf_l、wprintf、_wprintf_l
  • 第十五篇:MySQL 高级实战项目:构建高可用、可观测、性能优化一体化数据库平台
  • AI预测3D新模型百十个定位预测+胆码预测+去和尾2025年5月31日第94弹
  • 流媒体基础解析:音视频封装格式与传输协议
  • Kafka数据怎么保障不丢失