力扣面试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.pswp.cn/bicheng/90379.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/90379.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++实战:人脸识别7大核心实例

计算机视觉实例应用 基于C++的人脸识别实例 以下是一些基于C++的人脸识别实例的示例和实现方法,涵盖了多种技术和库的应用。这些例子可以帮助开发者快速上手并实现人脸识别功能。 OpenCV 基础人脸检测 使用OpenCV的预训练模型进行人脸检测是入门级示例。OpenCV自带Haar级联…

Uniapp中使用vue3语法

在setup语法糖中调用uniapp的页面生命周期 <script setup>import { onShow } from "dcloudio/uni-app"onShow(() > {//hanlder...}) </script>vue2混入在vue3中建议使用组合式API 新建baseHook.js import { ref } from "vue"; export fu…

C++vector(2)

2.vector深度剖析及模拟实现 2.1std::vector的核心框架接口的模拟实现bit::vector vector的模拟实现 2.2 使用memcpy拷贝问题 假设模拟实现的vector中的reserve接口中&#xff0c;使用memcpy进行的拷贝&#xff0c;以下代码会发生什么问题&#xff1f; int main() {gxl::ve…

IPSec VPN -- 野蛮模式

一、野蛮模式简介野蛮模式VPN是指IPsec VPN中IKE协商采用野蛮模式&#xff08;Aggressive Mode&#xff09;的虚拟专用网络。它是IKE第一阶段协商的一种方式&#xff0c;与主模式相对&#xff0c;具有协商速度快但安全性稍低的特点。以下是具体介绍&#xff1a;1、工作原理&…

rk3588开发板使用硬件编码处理视频

开发板默认下载的ffmpeg是通用版&#xff0c;无法调用rk3588的硬件编码器&#xff0c;视频编码效率低。 nyanmisaka开发了用于jellyfin的ffmpeg&#xff0c;支持rk3588硬件编码器&#xff0c;编译方法&#xff1a; https://github.com/nyanmisaka/ffmpeg-rockchip/wiki/Compil…

`neutron router-gateway-set` 操作失败的可能原因及解决方案

根据提供的错误信息和搜索结果&#xff0c;neutron router-gateway-set 操作失败的可能原因及解决方案如下&#xff1a;一、常见错误原因数据库字符集配置问题&#xff08;中文名支持&#xff09; 表现&#xff1a;若路由器名称包含中文字符&#xff0c;可能因数据库字符集非UT…

(一)ZooKeeper 发展历史

✨博客主页&#xff1a; https://blog.csdn.net/m0_63815035?typeblog &#x1f497;《博客内容》&#xff1a;.NET、Java.测试开发、Python、Android、Go、Node、Android前端小程序等相关领域知识 &#x1f4e2;博客专栏&#xff1a; https://blog.csdn.net/m0_63815035/cat…

OpenCV快速入门之CV宝典

文章目录OpenCV的基础应用一、OpenCV简介&#xff1a;1.1 OpenCV 优势1.2 OpenCV-Python二、环境安装2.1 环境导入三、图像表示3.1 颜色空间&#xff08;Color Space&#xff09;3.2 具体说明3.3 图像在计算机中的表示四、基本图像操作4.1 创建窗口**1. 核心窗口行为控制**cv.W…

LangChain4j 两种类型API

LangChain4j operates on two levels of abstraction: &#xfeff;LangChain4j 提供了两种类型API抽象Low level. At this level, you have the most freedom and access to all the low-level components such as ChatModel, UserMessage, AiMessage, EmbeddingStore, Embedd…

CLI 与 IDE 编码代理比较:提升开发效率的两种路径

引言 在当今快速发展的软件开发领域&#xff0c;人工智能编码助手已成为开发者工具箱中不可或缺的一部分。根据行业报告&#xff0c;使用AI编码助手可以将开发速度提高55%以上&#xff0c;同时显著提升代码质量。目前市场上主要有两种类型的编码代理&#xff1a;集成在IDE中的代…

【STM32】FreeRTOS 任务的创建(二)

这篇文章在于 详细解释 FreeRTOS 中任务的创建过程&#xff0c;包括任务创建的本质过程、API 详解、两种创建方式&#xff08;动态/静态&#xff09;、任务函数规范、常见错误及实践建议。 这里参照&#xff1a;RTOS官方文档&#xff1a;https://www.freertos.org/zh-cn-cmn-s…

软考 系统架构设计师系列知识点之面向服务架构设计理论与实践(9)

接前一篇文章:软考 系统架构设计师系列知识点之面向服务架构设计理论与实践(8) 所属章节: 第15章. 面向服务架构设计理论与实践 第3节 SOA的参考架构 15.3 SOA的参考架构 IBM的Websphere业务集成参考架构(如图15-2所示,以下简称参考架构)是典型的以服务为中心的企业集…

分区域材料设计:主承重区 / 次承重区 / 足弓区的弹性参数与刺激强度匹配

你是否总在为足部酸痛、膝盖不适或腰背僵硬烦恼&#xff1f;穿了昂贵的缓震跑鞋&#xff0c;用了定制矫形器&#xff0c;问题却反复出现&#xff1f;今天&#xff0c;我们要颠覆一个流传百年的“常识”——脚不是脆弱的“需要被保护的对象”&#xff0c;而是被错误的设计“惯坏…

使用Qt下QAudioOutput播放声音

导读本项目目的是使用QAudioOutput播放声音 &#xff0c;音频数据来源为ffmpeg解码后的音频数据。Qt音频播放类说明 QAudioFormatQAudioFormat是Qt多媒体框架中用于定义音频格式的核心类&#xff0c;用于设置音频数据的参数&#xff0c;确保与硬件设备兼容。其主要功能和参数如…

日语学习-日语知识点小记-构建基础-JLPT-N3阶段(9):ようなN

日语学习-日语知识点小记-构建基础-JLPT-N3阶段&#xff08;9&#xff09;&#xff1a;ようなN 1、前言&#xff08;1&#xff09;情况说明&#xff08;2&#xff09;工程师的信仰2、知识点&#xff08;&#xff11;&#xff09;复习&#xff08;&#xff12;&#xff09;复习&…

洛谷P1512 伊甸园日历游戏

一开始&#xff0c;我发现有“必胜策略”&#xff0c;就知道是博弈论&#xff0c;然后看了两种操作&#xff08;月份1和天数1&#xff09;&#xff0c;于是想到用记忆化搜索找出所有的可能性 &#xff0c;但不知道怎么判断当前是否为先手必胜/必败态&#xff0c;使用了TJ方法后…

Kafka——消费者组到底是什么?

引言在分布式系统中&#xff0c;消息中间件的核心价值在于高效地连接生产者与消费者&#xff0c;实现数据的可靠传递。然而&#xff0c;传统消息引擎面临一个两难困境&#xff1a;如何在“消息不重复消费”与“系统可扩展性”之间找到平衡&#xff1f;点对点模型&#xff08;如…

新mac电脑软件安装指南(前端开发用)

1. 下载git 未下载git直接下载homebrew也会提示你下载git 2. 下载homebrew 介绍&#xff1a; Homebrew 是 macOS 和 Linux 系统的开源包管理器‌&#xff0c;通过命令行实现软件的快速安装、更新和管理&#xff0c;极大简化了开发者及普通用户的工作流程。 命令&#xff1a;…

【HarmonyOS】ArkUI 布局与容器组件

目录前言一、线性布局(Column/Row)1.先布局后内容2.元素在主轴上的排列方式3.元素在交叉轴上的排列方式二、层叠布局(Stack)1.开发布局2.对齐方式三、弹性布局(Flex)四、创建列表(List)五、创建轮播(Swiper)1.基本用法2.常用属性3.样式自定义六、选项卡Tabs1.基本用法2.常用属性…

MCNN-BiLSTM-Attention分类预测模型等!

MCNN-BiLSTM-Attention分类预测模型基于多尺度卷积神经网络(MCNN)双向长短期记忆网络(BiLSTM)注意力机制(Attention)的分类预测模型&#xff0c;matlab代码&#xff0c;直接运行使用&#xff01;1、模型介绍&#xff1a;针对传统方法在噪声环境下诊断精度低的问题&#xff0c;提…