Leetcode(34)在排序数组中查找元素的第一个和最后一个位置——二分法

EV1527 vs HS1527:固定码芯片的STM32解码避坑指南 本文深入解析EV1527与HS1527固定码芯片的技术差异,提供基于STM32的完整解码方案与稳定性优化策略。通过硬件接口配置、状态机实现及示波器诊断,解决工业遥控、安防报警等场景中的解码难题,特别针对时序差异和干扰问题给出实用解决方案。 阅读详情

题目描述
给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。
你的算法时间复杂度必须是 O(log n) 级别。
如果数组中不存在目标值,返回 [-1, -1]。

示例 1:
输入: nums = [5,7,7,8,8,10], target = 8
输出: [3,4]
示例 2:
输入: nums = [5,7,7,8,8,10], target = 6
输出: [-1,-1]

思路

有序,查找,二分。
设置left为true或false,指示当中值等于目标值的时候是搜索左区间还是右区间,也就是寻找起始位置还是最后位置。找到目标值之后并不立刻返回,直到循环完成。

代码
class Solution {
public:
    int findIndex(vector<int>& nums, int target,bool left){
        int lo = 0;
        int hi = nums.size() ;
        while(lo < hi){
            int mid = (lo + hi) / 2;
            if(nums[mid] == target && left || nums[mid] > target){
                hi = mid ;
            }
            else lo = mid + 1;
        }
        return lo;
    }
    vector<int> searchRange(vector<int>& nums, int target) {
        vector<int> targetRange = {-1,-1};
        int leftIndex = findIndex(nums,target,true);
        if(leftIndex == nums.size() || nums[leftIndex] != target) return targetRange;
        int rightIndex = findIndex(nums,target,false);
        targetRange[0] = leftIndex;
        targetRange[1] = rightIndex - 1;
        return targetRange;
    }
};

学习笔记之——Event Camera(事件相机)调研 概述 Event Camera是一种bio-inspired sensor,对应的领域为bio-inspired vision。对于传统的相机,从某种程度上,是捕获一个静态/静止的空间,而Event Camera的目的是:敏感地捕捉运动的物体。 对于传统RGB-camera,相机传回的信息是同步的,所谓同步,就是在某一时刻t,相机会进行曝光,把这一时刻所有的像素填在一个矩阵里回传,一张照片就诞生了。一张照片上所有的像素都对应着同一时刻。至于视频,不过是很多帧的图片,相邻图片间的时间间隔... 阅读详情

相关推荐

Pywinauto与Inspect.exe完美搭配:解决Windows应用UI自动化中的元素定位难题

本文详细介绍了如何将Pywinauto与Inspect.exe结合,以解决Windows应用UI自动化中的核心难题——元素定位。通过实战指南,阐述了如何利用Inspect.exe在UIA模式下精准侦察控件属性,并将这些信息转化为Pywinauto的稳健定位策略,从而高效自动化WPF、WinForms等现代框架构建的复杂桌面应用。

weixin_29297127的博客 520

leetcode 34. 搜索范围

给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。你的算法时间复杂度必须是 O(log n) 级别。如果数组中不存在目标值,返回 [-1, -1]。示例 1:输入: nums = [5,7,7,8,8,10], target = 8 输出: [3,4]示例 2:输入: nums = [5,7,7,8,8,10], target = 6...

别云间的博客 2276

【大模型】大模型知识蒸馏 综述解读(Knowledge Distillation of Large Language Models)

知识蒸馏的(论文)方法总结。归纳了通过数据(如指令、对话、多模态)和训练方法(SFT、RL、数据增强),将复杂技能(如对齐、工具使用、多模态)蒸馏到开源模型的核心框架,附典型模型示例(如Alpaca、LLaVA)。

songxia928_928的博客 4334

leetcode34——两遍二分法

题目链接:https://leetcode-cn.com/problems/find-first-and-last-position-of-element-in-sorted-array/submissions/ 第一遍找左边第一个目标值,第二遍找大于目标值的第一个值得位置 class Solution { public: int findIndex(vector<int>& nums,int target,bool flag) { int len=nums.size.

dtwd886的博客 1451

基于 Python Flask 的智能个人财务系统

4.财务分析与报告:自动生成财务分析报告,提供图表展示(如饼图、柱状图)帮助用户了解收支状况和财务趋势。9.管理员管理功能:提供管理员模块,允许管理员查看用户财务数据、生成统计报告,并进行用户管理与权限控制。5.资产管理:用户可以记录并追踪个人资产(如房产、车辆、投资等),系统提供资产价值增减情况和趋势分析。3.预算制定与管理:用户根据收入设定每月预算,系统自动对比实际支出与预算差异,实时提醒预算完成情况。6.信用卡管理:提供信用卡账单记录与管理功能,提醒用户信用卡还款日期,避免逾期,帮助管理信用卡消费。

weixin_68689665的博客 424

晶圆测试厂wafer map管理建议

按照Recipe设定bin定义 应有版本管理概念,一般使用最新版本做为活动版本即可 Bin明细中应包含 BinID、BinCode、BinName、BinType、BinColor、Description BinID可使用数字类型 BinCode可参照实际机台的Bin,用于匹配 有些公司也将BinID、BinCode理解为SBin和HBin 即 Software Bin & Hardware Bin 一般也将BinID对应到客户的Bin BinType

凯神做开发 1万+

java-二分法查找数组元素

package com.rj.bd.lx; import java.util.Arrays; /** * @desc 数组元素的查找之二分法 * @author yhx * @time 2019-09-11 * */ public class ErFenFa { public static void main(String[] args...

weixin_30572613的博客 354

RT-Thread stm32h7使用串口DMA

stm32h7在rtthread中无法使用串口DMA,通过更改驱动代码使其支持串口DMA

qq_35141454的博客 2285

力扣34在排序数组中查找元素的第一个和最后一个位置(二分法哈希表法)

给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值 target,返回 [-1, -1]。你必须设计并实现时间复杂度为 O(log n) 的算法解决此问题。 思路:数组时有序的,所以可以使用二分法,在区间[i,j]中找到target第一次出现的位置(左边界),和最后一次出现的位置(右边界) 左边界:由于是有序数组,从

BadSheepC 530

UDS自动化测试-Service 0x27(CAPL调用dll实现key计算)

相信读者基于Diagnostic/ISO TP Confighration中cdd、dll文件的测试并不陌生,本文基于其的基础上,介绍在capl中调用内置的函数diagGenerateKeyFromSeed实现27服务解锁,从而进行诊断自动化测试。本文基于4个byte的Seed、16个byte的Key的安全访问,实现27服务的自动化测试。需要加载项目使用的cdd文件,如果没有的情况下可以使用canoe例程中默认的cdd文件。

诊断协议那些事儿's blog 2052

QT-Creator安装教程(windows)

本文介绍了Qt的下载安装步骤:1)通过镜像源下载安装包;2)运行exe文件时使用命令行参数指定镜像地址;3)在安装过程中选择路径和自定义安装组件,包含QT5和QT6版本的详细安装说明;4)安装后可继续添加扩展包或卸载组件。重点提示了QT6必须勾选的关键组件,并提供了组件管理的操作方法。

qq_53545309的博客 3102

Leetcode:34二分法查找之在排序数组中查找元素的第一个和最后一个位置

本文对二分法查找及其变形做一个总结。 给定一个按照升序排列的整数数组nums,和一个目标值target。找出给定目标值在数组中的开始位置和结束位置。 你的算法时间复杂度必须是O(logn) 级别。 如果数组中不存在目标值,返回[-1, -1]。 示例 1: 输入: nums = [5,7,7,8,8,10], target = 8 输出: [3,4] 示例2: ...

Rain 781

【HFSS】仿真目录

Author: JiJi\textrm{Author: JiJi}Author: JiJi Created Time: 2026.04.27\textrm{Created Time: 2026.04.27}Created Time: 2026.04.27 Modified Time: 2026.04.27\textrm{Modified Time: 2026.04.27}Modified Time: 2026.04.27如果大家觉得有用,就点个赞吧,在阅读过程中存在任何困惑,可在下方评论区留言~

u011699626的博客 310

leecode算法《34. 在排序数组中查找元素的第一个和最后一个位置》详解有注释,简单明了。

leecode算法《34. 在排序数组中查找元素的第一个和最后一个位置》详解有注释,简单明了。 原题内容 给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。 你的算法时间复杂度必须是 O(log n) 级别。 如果数组中不存在目标值,返回 [-1, -1]。 示例 1: 输入: nums = [5,7,7,8,8,10], targe...

qq_35971301的博客 188

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

二分法的强化(力扣34-查找元素的第一个最后一个位置)

34. 在排序数组中查找元素的第一个和最后一个位置给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值 target,返回 [-1, -1]。进阶:你可以设计并实现时间复杂度为 $O(\log n)$ 的算法解决此问题吗?输入:nums = [5,7,7,8,8,10], target = 8输出:[3,4]输入:nums = [5,7,7,8,8,10], target = 6输出:[-1,-1]

2301_79524309的博客 1731

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

LeetCode--34.在排序数组中查找元素第一个和最后一个位置(二分法)

在排序数组中查找元素第一个和最后一个位置(C++)1. 题目描述2. 题目分析3. C++语言实现 1. 题目描述 难度:中等 2. 题目分析 看到题目我们需要知道以下几点: 数组是有序的 数组中存在重复的元素 算法时间复杂度必须是O(logn)级别 目标元素可能不存在与数组中 根据题目要求,算法复杂度必须是O(logn)级别,那么二分法就是最佳的算法。根据本题,我们要寻找的是目标元素在数组...

魔法师の屋子★↓☆ 3268

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Leetcode34在排序数组中查找元素的第一个和最后一个位置(二分法求解)

Leetcode34在排序数组中查找元素的第一个和最后一个位置(二分法求解) 给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。 如果数组中不存在目标值 target,返回 [-1, -1]。 答题: /** \* @param {number[]} nums \* @param {number} target \* @return {number[]} */ var searchRange = function(nums, targe

伯约同学的前端学习之路 515

leetcode(Array)--34 在排序数组中查找元素的第一个和最后一个位置

leetcode(Array)–34 在排序数组中查找元素的第一个和最后一个位置 1,题目: 2,思路: (1)、利用二分法,先找到中间值mid对应的值,若nums[mid] == target,则利用循环向左和向右找出最左的target和最右的target (2),若nums[mid]!=target,则target的值不是在左边数组里就是在右边的数组里,再用if条件找出最左和最右的targ...

chen772209的博客 167

C++:数组-二分法-Leetcode-34题在排序数组中查找元素的第一个和最后一个位置

考察对二分法的熟练程度,本题可以求左右边界一块写,但初学者为了更好的理解,还是分开二分法求左右边界好,还是要多练,多调试理解原理。

Bellwen的博客 869

leetcode34. 在排序数组中查找元素的第一个和最后一个位置(二分法)

给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。 你的算法时间复杂度必须是 O(log n) 级别。 如果数组中不存在目标值,返回 [-1, -1]。 示例 1: 输入: nums = [5,7,7,8,8,10], target = 8 输出: [3,4] 示例 2: 输入: nums = [5,7,7,8,8,10], targ...

rudychan的博客 143

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

【LeetCode】34. Find First and Last Position of Element in Sorted Array 在排序数组中查找元素的第一个和最后一个位置(Medium)(JAVA)题目描述:Given an array of integers nums sorted in ascending order, find the starting and endi...

weixin_39906130的博客 173

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

【代码】LeetCode Hot100【二分法-34. 在排序数组中查找元素的第一个和最后一个位置】

qq_45940888的博客 463

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

34. 在排序数组中查找元素的第一个和最后一个位置

ASDF的博客 441

leetcode 34. 在排序数组中查找元素的第一个和最后一个位置 二分法

这是道二分法的裸题,直接二分去做就行了。

Alkali!的博客 296

力扣34题,在排序数组中查找元素的第一个和最后一个位置

3.如果target在数组内,其开始索引是leftBorder+1,结束索引是rightBorder-1,二者至少应该是相等的(target只有1个),此时(rightBorder-1)-(leftBorder+1)=0,这时应该返回{leftBorder+1,rightBorder-1}。综合考虑,只要判断(rightBorder-1)-(leftBorder+1)>=0就返回{leftBorder+1,rightBorder-1},其他情况都返回{-1,-1}2.在数组范围内,但是不存在于数组中。

qq_52980102的博客 450

算法——LeetCode34. 在排序数组中查找元素的第一个和最后一个位置(二分查找及二分法要点总结)

17. 电话号码的字母组合 原题链接 题目: 题解1:递归(DFS) 主要流程: 代码: 题解2:队列求法 主要思路: 主要流程: 代码: 参考题解: https://leetcode-cn.com/problems/find-first-and-last-position-of-element-in-sorted-array/solution/da-jia-bu-yao-kan-labuladong-de-jie-fa-fei-chang-2/ ...

知北行的博客 626
上一篇: Leetcode(33)搜索旋转排序数组——二分法
下一篇: Leetcode(46)全排列——回溯法的板子
softwareX4
博客等级 码龄9年 21粉丝 63原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值