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

力扣面试150题--在排序数组中查找元素的第一个和最后一个位置

Day 85

题目描述

在这里插入图片描述

思路

当 nums[mid] < target 时,说明目标值在右侧,移动左指针 left = mid + 1
当 nums[mid] >= target 时,说明目标值可能在当前位置或左侧,移动右指针 right = mid - 1
循环结束后,left 指针会指向第一个大于或等于 target 的元素位置
检查 left 是否越界或值不匹配,确定是否找到目标值

当 nums[mid] <= target 时,说明目标值可能在当前位置或右侧,移动左指针 left = mid + 1
当 nums[mid] > target 时,说明目标值在左侧,移动右指针 right = mid - 1
循环结束后,right 指针会指向最后一个小于或等于 target 的元素位置
检查 right 是否越界或值不匹配,确定是否找到目标值

class Solution {public int[] searchRange(int[] nums, int target) {int[] res = new int[]{-1, -1};if (nums == null || nums.length == 0) {return res;}// 查找第一个出现位置int left = 0;int right = nums.length - 1;while (left <= right) {int mid = left + (right - left) / 2;if (nums[mid] < target) {left = mid + 1;} else {right = mid - 1;}}// 检查是否越界或值不匹配if (left >= nums.length || nums[left] != target) {return res;}res[0] = left;// 查找最后一个出现位置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 - 1;}}// 检查是否越界if (right < 0 || nums[right] != target) {return res;}res[1] = right;return res;}
}
http://www.dtcms.com/a/296198.html

相关文章:

  • Java中的静态变量是在“堆“还是“方法区“?
  • 无人机微型风速风向仪:翱翔天际的 “风之侦探”
  • GISBox实操指南:如何将IFC文件高效转换为3DTiles格式‌‌
  • docker及docker-compose离线安装包下载
  • Java中的抽象类 abstract 关键字
  • 第一节:认识大模型微调
  • S7-1500 与 ET200MP 的组态控制通信(Configuration Control)功能实现详解(上)
  • 【论文|复现】YOLOFuse:面向多模态目标检测的双流融合框架
  • IROS-2025 | OIKG:基于观察-图交互与关键细节引导的视觉语言导航
  • 疯狂星期四第17天运营日记
  • 手写DQN (FrozenLake环境)
  • 飞牛系统安装DataEase自定义Docker包
  • 医疗行业新变革:AR 培训系统助力手术培训精准高效​
  • 大模型回复数据标注优化方案
  • STM32-FSMC
  • 利用Web3加密技术保障您的在线数据安全
  • Java学习----原型模式
  • 草稿未完成!Linux网络系统【文件传输】【I/O 多路复用】
  • docker安装 Elasticsearch、Kibana、IK 分词器
  • 基于SpringBoot+Vue的电脑维修管理系统(WebSocket实时聊天、Echarts图形化分析)
  • 二分查找----5.寻找旋转排序数组中的最小值
  • 【从0开始学习Java | 第3篇】阶段综合练习 - 五子棋制作
  • 「OC」源码学习——属性关键字
  • 基于深度学习的胸部 X 光图像肺炎分类系统(一)
  • STL学习(?map容器)
  • C++性能优化实战‘从毫秒到微秒的底层突围‘
  • C++ 性能优化
  • WPF 控制动画开关
  • 一键修复ipynb,Jupyter Notebook损坏文件
  • redis前期工作:环境搭建-在ubuntu安装redis