二分查找------查找区间

embedded/2025/3/26 1:24:57/

1. 题目

在这里插入图片描述

2. 思路和题解

这道题虽然是道中等题,并且看起来很复杂,但是实际上就是给定一个数组和目标值,让我们去寻找该目标值在数组中的位置。题目还提到说设计O(log n)的算法解决问题,更进一步暗示我们去用二分查找。要找开始位置和结束位置,那就分两步:

  1. 寻找开始位置
java">while (left <= right) {int mid = left + (right - left) / 2;if (nums[mid] == target) {arr[0] = mid; //找到目标值后,将下标赋值给数组第一个元素right = mid - 1; // 这一步很重要,是为了寻找在这之前,是否还存在目标值} else if (nums[mid] < target){left = mid + 1;} else {right = mid - 1;}
}
  1. 寻找结束位置
java">while (left <= right) {int mid = left + (right - left) / 2;if (nums[mid] == target) {arr[1] = mid;left = mid + 1; //这一步和上面一样也很重要,是为了确定在这之后,是否还存在目标值} else if (nums[mid] < target){left = mid + 1;} else {right = mid - 1;}
}

所以整体代码如下

java">class Solution {public int[] searchRange(int[] nums, int target) {int left = 0;int right = nums.length - 1;int[] arr = {-1, -1};//第一次查找while (left <= right) {int mid = left + (right - left) / 2;if (nums[mid] == target) {arr[0] = mid;right = mid - 1;} else if (nums[mid] < target){left = mid + 1;} else {right = mid - 1;}}//第二次查找left = 0;right = nums.length - 1;while (left <= right) {int mid = left + (right - left) / 2;if (nums[mid] == target) {arr[1] = mid;left = mid + 1;} else if (nums[mid] < target){left = mid + 1;} else {right = mid - 1;}}return arr;}
}

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

相关文章

DeepSeek+RAG局域网部署

已经有很多平台集成RAG模式&#xff0c;dify&#xff0c;cherrystudio等&#xff0c;这里通过AI辅助&#xff0c;用DS的API实现一个简单的RAG部署。框架主要技术栈是Chroma,langchain,streamlit&#xff0c;答案流式输出&#xff0c;并且对答案加上索引。支持doc,docx,pdf,txt。…

《AI大模型开发笔记》企业RAG技术实战(二)

接上一篇 《AI大模型开发笔记》企业RAG技术实战(一)https://mp.csdn.net/mp_blog/creation/editor/146381354 使用llamaindex实例 https://docs.llamaindex.ai/en/stable/api_reference/ 环境配置 我们继续使用前面langchain例子的python虚环境,不用新建,激活就行 …

Vue3中router最佳封装落地

文章目录 前言一、拆分路由文件夹&#xff1f;二、main.ts中注册路由总结 前言 router在使用过程中如果我们直接在一个文件的一个数组中配置&#xff0c;最后路由越来越多会导致不易管理&#xff0c;我们可以将一个页面的路由配置在一个数组中最后统一导入&#xff0c;这样就会…

eclipse [jvm memory monitor] SHOW_MEMORY_MONITOR=true

eclipse虚拟机内存监控设置SHOW_MEMORY_MONITORtrue D:\eclipse-jee-oxygen-2-win32-x86_64\workspace\.metadata\.plugins\org.eclipse.core.runtime\.settings org.eclipse.ui.prefs (文件比较多&#xff0c;别找错了&#xff09; SHOW_MEMORY_MONITORtrue 重启 -xms 1024…

STL性能优化方法

STL&#xff08;Standard Template Library&#xff09;性能优化实战&#xff0c;涉及数据结构选择、内存管理、算法优化等多个方面。以下详细讲解STL性能优化方法&#xff0c;给出实践建议和典型场景&#xff1a; &#x1f4cc; 一、STL性能问题分析 STL性能瓶颈通常包括&…

k8s集群添加一个新GPU节点

前提 现在是已经搭建好一个GPU集群&#xff0c;需要添加一个新的节点&#xff08;3090卡&#xff09;&#xff0c;用来分担工作&#xff0c;大致可以分为以下几个部分&#xff1a; 1&#xff0c;安装GPU驱动2&#xff0c;安装docker3&#xff0c;安装cri-dockerd4&#xff0c…

操作系统导论——第13章 抽象:地址空间

一、早期系统 从内存来看&#xff0c;早期的机器并没有提供多少抽象给用户。基本上&#xff0c;机器的物理内存如图13.1所示 操作系统曾经是一组函数&#xff08;实际上是一个库&#xff09;&#xff0c;在内存中&#xff08;在本例中&#xff0c;从物理地址0开始&#xff09;&…

Postman高级功能深度解析:Mock Server与自动化监控——构建高效API测试与监控体系

引言&#xff1a;Postman在API开发中的核心价值 在数字化时代&#xff0c;API&#xff08;应用程序编程接口&#xff09;已成为系统间交互的“神经网络”&#xff0c;其质量直接影响用户体验与业务连续性。然而&#xff0c;传统API测试面临两大挑战&#xff1a; 开发阶段依赖…