news 2026/4/23 14:21:20

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

作者头像

张小明

前端开发工程师

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/4/22 13:02:17

EmotiVoice语音合成引擎为何成为开发者的新宠?

EmotiVoice语音合成引擎为何成为开发者的新宠&#xff1f; 在智能语音助手越来越“懂人心”的今天&#xff0c;你是否想过&#xff0c;它们的声音也可以像真人一样富有情绪起伏、甚至带着你的音色娓娓道来&#xff1f;这不再是科幻电影的桥段——随着EmotiVoice等新一代开源语音…

作者头像 李华
网站建设 2026/4/22 3:33:39

如何用Kotaemon构建可复现的检索增强生成应用?

如何用Kotaemon构建可复现的检索增强生成应用&#xff1f; 在企业智能化转型的浪潮中&#xff0c;越来越多团队尝试将大语言模型&#xff08;LLM&#xff09;引入客服、知识管理与内部协作系统。但现实往往不如预期&#xff1a;模型回答看似流畅却频频“一本正经地胡说八道”&a…

作者头像 李华
网站建设 2026/4/23 12:46:45

Python大数据技术的全国降水分析可视化系统的设计与实现_u5yzx5cx_c033

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

作者头像 李华
网站建设 2026/4/23 11:29:36

深入理解Kotaemon的模块化解耦设计思想

深入理解Kotaemon的模块化解耦设计思想 在构建智能对话系统的实践中&#xff0c;许多团队都曾面临这样的困境&#xff1a;一个原本只用于回答简单问题的聊天机器人&#xff0c;随着业务需求不断叠加——接入知识库、连接CRM系统、支持多轮对话、引入A/B测试——逐渐演变成一头…

作者头像 李华
网站建设 2026/4/23 0:42:21

Kotaemon支持gRPC协议调用,性能更强

Kotaemon 集成 gRPC&#xff1a;重塑智能对话系统的通信效率 在构建现代 AI 智能体的战场上&#xff0c;性能瓶颈往往不在于模型参数量有多大&#xff0c;而藏在那些看似不起眼的服务调用之间。你有没有遇到过这样的场景&#xff1f;用户问一句“怎么申请年假”&#xff0c;系统…

作者头像 李华