leetcode34题 在排序数组中查找元素的第一个和最后一个位置
📅 2026/8/1 5:01:10
👁️ 次浏览
目录34. 在排序数组中查找元素的第一个和最后一个位置题目描述思路核心思想关键点代码解法一:闭区间[l, r]解法二:左闭右开[l, r)解法三:开区间(l, r)答疑Q: 闭区间写法中,nums[mid] target时为什么是r mid - 1?mid不可能是答案吗?不会错过正确答案吗?复杂度分析题号: “34”难度: 中等标签: 二分查找,数组链接: https://leetcode.cn/problems/find-first-and-last-position-of-element-in-sorted-array/description/34. 在排序数组中查找元素的第一个和最后一个位置题目描述给定一个升序排列的整数数组nums和一个目标值target,找出target在数组中的第一个和最后一个位置;若数组中不存在target,返回[-1, -1]。输入:nums(升序数组,可能含重复元素)、target输出:[start, end](下标),不存在时返回[-1, -1]进阶: 要求时间复杂度为 O(log n)思路核心思想两次二分,分别定位左边界与右边界:左边界lowerBound(nums, target):第一个 target的下标右边界lowerBound(nums, target 1) - 1:即「第一个 target的位置」再往前一位,得到最后一个 target的下标若start n或nums[start] ! target,说明目标不存在,返回[-1, -1];否则返回[start, end](起点存在时,终点必然存在)。关键点完整的需求转化表见 [[二分查找模板]],本题只需用到其中两行:需求写法不存在时第一个 x的下标lowerBound(nums, x)n最后一个 x的下标lowerBound(nums, x 1) - 1-1两次二分相互独立,各 O(log n),总复杂度 O(log n)。代码三种区间写法的lowerBound行为完全一致,searchRange主逻辑共用。默认推荐左闭右开(与 C STLlower_bound语义一致)。解法一:闭区间[l, r]classSolution{public:intlowerBound(vectorintnums,inttarget){intl0,rnums.size()-1;while(lr){intmidl(r-l)/2;// 防止溢出if(nums[mid]target)rmid-1;// 答案至多为 mid,收缩右边界elselmid1;}returnl;// 或 r 1}vectorintsearchRange(vectorintnums,inttarget){intstartlowerBound(nums,target);if(startnums.size()||nums[start]!target)return{-1,-1};// 起点不存在,终点必然不存在intendlowerBound(nums,target1)-1;return{start,end};}};解法二:左闭右开[l, r)classSolution{public:intlowerBound(vectorintnums,inttarget){intl0,rnums.size();// 区间 [0, n),r 取 n 可表示越界while(lr){intmidl(r-l)/2;if(nums[mid]target)rmid;// 答案在 [l, mid] 内,保留 midelselmid1;}returnl;// 或 r}vectorintsearchRange(vectorintnums,inttarget){intstartlowerBound(nums,target);if(startnums.size()||nums[start]!target)return{-1,-1};intendlowerBound(nums,target1)-1;return{start,end};}};解法三:开区间(l, r)classSolution{public:intlowerBound(vectorintnums,inttarget){intl-1,rnums.size();// 区间 (-1, n),哨兵可表示边界while(l1r){intmidl(r-l)/2;// 循环保证 r - l 2,mid 必在区间内if(nums[mid]target)rmid;elselmid;}returnr;// 或 l 1}vectorintsearchRange(vectorintnums,inttarget){intstartlowerBound(nums,target);if(startnums.size()||nums[start]!target)return{-1,-1};intendlowerBound(nums,target1)-1;return{start,end};}};答疑Q: 闭区间写法中,nums[mid] target时为什么是r mid - 1?mid不可能是答案吗?不会错过正确答案吗?关键在于区分二分范围与答案所在范围。lowerBound维护的循环不变量是:答案(第一个 target的位置)始终落在[l, r 1]中。当nums[mid] target时,mid已经满足条件,而答案必须是「第一个」满足条件的位置,所以答案至多为mid——mid右侧全部排除,二分范围收缩为[l, mid - 1],而可能答案mid由边界r 1携带,不会被丢弃。同理,若target大于区间内所有元素,循环结束时l r 1,答案正是l。二分收缩的是候选区间,答案由边界l/r携带,永不丢失。其余两种写法同理:左闭右开由r携带,开区间由r(或l 1)携带。复杂度分析时间复杂度空间复杂度说明O(log n)O(1)两次二分各 O(log n);原地操作,无额外空间
4大核心理念:从零构建OpenCore黑苹果系统的完整技术实现指南 【免费下载链接】OpenCore-Install-Guide Repo for the OpenCore Install Guide 项目地址: https://gitcode.com/gh_mirrors/op/OpenCore-Install-Guide
OpenCore Install Guide是一个专注于在非苹…
📅 2026/8/1 5:01:10
当前算力机房的显卡主要分为风冷标准卡与 SXM 模组两大类,二者硬件架构、集成度不同,对应的故障特点与维修工艺也存在明显差异。不少运维对两类显卡的维修区别了解不足,送修时容易因准备不到位延长修复周期,甚至造成二次损伤。本文…
📅 2026/8/1 5:00:09
传统软件工程中,CI/CD 已经成为代码交付的基础设施。
开发者提交代码后,系统自动执行:
代码拉取
依赖安装
编译构建
单元测试
安全扫描
产物发布
环境部署CI/CD 解决了一个重要问题:如何让代码变更以标准化、自动化、可验证的方式…
📅 2026/8/1 5:00:09
更多请点击:
https://intelliparadigm.com
第一章:AI时代网页设计师的生存警报:这5项能力将在6个月内决定薪资天花板 当Figma插件自动生成响应式布局、Copilot一行指令补全整套React组件、MidJourney 5秒产出高保真视觉稿——网页设计正从“…
📅 2026/8/1 12:53:54
更多请点击:
https://intelliparadigm.com
第一章:效果评估不是终点而是起点:构建可迭代的AI活动智能评估闭环(含3类业务场景落地模板) 效果评估在AI驱动的营销活动中常被误认为项目收尾环节,实则应是持续…
📅 2026/8/1 12:53:54
2026年7月,中国出海企业的专利部门接连收到两条值得放进“待办优先”清单的消息:8月1日,中欧双边专利审查高速路(PPH)试点正式启动;同月,PCT联盟大会批准现代化国际检索与审查框架,2…
📅 2026/8/1 12:53:53
5分钟快速上手:AI视频生成工具MoneyPrinterTurbo终极指南 【免费下载链接】MoneyPrinterTurbo 利用 AI 大模型和自动化工作流,根据主题或关键词一键生成高清短视频。Generate HD short videos from a topic or keyword with an automated AI workflow. …
📅 2026/8/1 12:53:53
永久解锁Wand专业版:彻底告别2小时限制的终极方案 【免费下载链接】Wand-Enhancer Advanced UX and interoperability extension for Wand (WeMod) app 项目地址: https://gitcode.com/GitHub_Trending/we/Wand-Enhancer
还在为Wand(原WeMod&…
📅 2026/8/1 12:53:53
1. 毕业生论文降重工具全景解析 2026届毕业生正面临前所未有的学术写作挑战。随着高校对学术原创性要求的不断提高,论文查重率成为决定论文成败的关键指标之一。作为经历过三次毕业论文指导的老手,我深刻理解降重过程中的焦虑与困惑。 市面上的降重工具…
📅 2026/8/1 12:52:53
AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言
HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…
📅 2026/8/1 0:00:26
无损视频剪辑终极指南:如何实现快速高效的多媒体处理 【免费下载链接】lossless-cut The swiss army knife of lossless video/audio editing 项目地址: https://gitcode.com/gh_mirrors/lo/lossless-cut
在数字媒体创作领域,视频编辑处理的质量损…
📅 2026/8/1 0:00:30
1. 本科生论文写作的AI辅助现状本科毕业论文是每个大学生必须跨越的一道坎。记得我当年写论文时,光是文献检索就花了整整两周时间,打印的参考文献堆满了半个书桌。如今AI技术的发展为学术写作带来了革命性变化,合理使用这些工具可以节省80%以…
📅 2026/8/1 0:00:30
更多请点击:
https://codechina.net
第一章:AI帮助理解数学概念 人工智能正以前所未有的方式重塑数学学习的路径。通过自然语言处理与符号计算的深度融合,AI不仅能解析抽象定义,还能将定理、证明和几何直觉转化为可交互、可验证的…
📅 2026/8/1 1:20:16
1. 项目背景与核心价值去年参与的一个短剧项目让我深刻体会到传统创作流程的痛点:编剧团队花了三周打磨剧本,角色设计反复修改了七版,最后成片时又因为演员档期问题不得不临时调整分镜。这种低效的创作模式在快节奏的内容行业越来越难以为继。…
📅 2026/8/1 1:20:19
remix-i18next TypeScript类型安全实践:确保翻译键与类型定义同步 【免费下载链接】remix-i18next The easiest way to translate your React Router framework mode apps 项目地址: https://gitcode.com/gh_mirrors/re/remix-i18next
在开发多语言应用时&am…
📅 2026/8/1 1:20:17
AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言
HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…
📅 2026/8/1 0:00:26
无损视频剪辑终极指南:如何实现快速高效的多媒体处理 【免费下载链接】lossless-cut The swiss army knife of lossless video/audio editing 项目地址: https://gitcode.com/gh_mirrors/lo/lossless-cut
在数字媒体创作领域,视频编辑处理的质量损…
📅 2026/8/1 0:00:30
1. 本科生论文写作的AI辅助现状本科毕业论文是每个大学生必须跨越的一道坎。记得我当年写论文时,光是文献检索就花了整整两周时间,打印的参考文献堆满了半个书桌。如今AI技术的发展为学术写作带来了革命性变化,合理使用这些工具可以节省80%以…
📅 2026/8/1 0:00:30