news 2026/9/10 23:55:24

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
在排序数组中查找元素的第一个和最后一个位置

题目描述

给你一个按照非递减顺序排列的整数数组nums,和一个目标值target。请你找出给定目标值在数组中的开始位置和结束位置。

如果数组中不存在目标值target,返回[-1, -1]

你必须设计并实现时间复杂度为O(log n)的算法解决此问题。

解题思路:

class Solution { public int[] searchRange(int[] nums, int target) { int[] res = new int[]{-1,-1}; int left = 0; int right = nums.length-1; while(left <= right){ int temp = (left + right) >> 1; if(nums[temp] > target){ right = temp - 1; }else if(nums[temp] < target){ left = temp + 1; }else{ left = temp; right = temp; while((right <nums.length-1)&&(nums[right] == nums[right+1])){ right++; } while((left > 0)&&(nums[left] == nums[left-1])){ left--; } res[0] = left; res[1] = right; } } return res; } }

这是最朴素的思想,二分查找,如果找到了再往两边拓展,处理边界条件,只可惜超时了。

需要对二分法再进行二分查找。

官方题解:

class Solution { public int[] searchRange(int[] nums, int target) { int leftIdx = binarySearch(nums, target, true); int rightIdx = binarySearch(nums, target, false) - 1; if (leftIdx <= rightIdx && rightIdx < nums.length && nums[leftIdx] == target && nums[rightIdx] == target) { return new int[]{leftIdx, rightIdx}; } return new int[]{-1, -1}; } public int binarySearch(int[] nums, int target, boolean lower) { int left = 0, right = nums.length - 1, ans = nums.length; while (left <= right) { int mid = (left + right) / 2; if (nums[mid] > target || (lower && nums[mid] >= target)) { right = mid - 1; ans = mid; } else { left = mid + 1; } } return ans; } }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/9 11:42:51

Kotaemon对话状态管理机制深入解读

Kotaemon对话状态管理机制深入解读 在企业级智能对话系统日益复杂的今天&#xff0c;一个看似简单的用户提问背后&#xff0c;往往隐藏着多轮交互、上下文依赖和复杂业务逻辑的协同。比如当用户说“查一下我昨天下的订单”&#xff0c;系统不仅要识别意图&#xff0c;还要关联会…

作者头像 李华
网站建设 2026/9/10 11:25:53

EmotiVoice语音输出格式支持说明(WAV/MP3/PCM)

EmotiVoice语音输出格式支持说明&#xff08;WAV/MP3/PCM&#xff09; 在构建现代语音交互系统时&#xff0c;一个常被忽视但至关重要的环节是&#xff1a;如何将合成的语音“交付”到终端设备上&#xff1f; 音频格式的选择看似只是个技术细节&#xff0c;实则深刻影响着系统的…

作者头像 李华
网站建设 2026/9/10 11:16:56

基于Python主流汽车价格分析可视化系统的设计与实现_nf85t54h_论文

文章目录 系统截图项目简介大数据系统开发流程主要运用技术介绍爬虫核心代码展示结论源码文档获取定制开发/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01; 系统截图 基于Python_nf85t54h_ 论文主流汽车价格分析可视化系统的设计与实现 项目简…

作者头像 李华
网站建设 2026/9/9 19:23:32

基于Python豆瓣电影数据可视化分析设计与实现_05119o4c_论文

文章目录系统截图项目简介大数据系统开发流程主要运用技术介绍爬虫核心代码展示结论源码文档获取定制开发/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;系统截图 基于Python_5119o4c_ 论文豆瓣电影数据可视化分析设计与实现 项目简介 本次研…

作者头像 李华
网站建设 2026/9/9 15:45:12

如何训练自己的情感语音模型?基于EmotiVoice的实践

如何训练自己的情感语音模型&#xff1f;基于 EmotiVoice 的实践 在虚拟主播的直播间里&#xff0c;一句“我太开心了&#xff01;”如果只是平铺直叙地念出来&#xff0c;观众很难共情&#xff1b;但如果语气上扬、节奏轻快、带着笑意——哪怕知道是AI合成的声音&#xff0c;情…

作者头像 李华