34. 在排序数组中查找元素的第一个和最后一个位置
题目:
给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。
如果数组中不存在目标值 target,返回 [-1, -1]。
进阶:
你可以设计并实现时间复杂度为 O(log n) 的算法解决此问题吗? //二分查找法
示例 1:
输入:nums = [5,7,7,8,8,10], target = 8
输出:[3,4]
代码:
class Solution {
public int[] searchRange(int[] nums, int target) {
int[] arr=new int[2];
arr[0]=-1;
arr[1]=-1;
if(nums==null||nums.length==0){return arr;} //数组有问题
int i=Arrays.binarySearch(nums,target);
int j=i;
if(i<0){return arr;} //没有找到
while(i>=0||j<nums.length){
if( (i>=0&&nums[i]==target) || (j<nums.length&&nums[j]==target) ){
if(i>=0&&nums[i]==target){
i--;
}
if(j<nums.length&&nums[j]==target){
j++;
}
}
else{break;}
}
arr[0]=i+1;
arr[1]=j-1;
return arr;
}
}
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术