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;
    
   
}

}

posted @   堤苏白  阅读(53)  评论(0编辑  收藏  举报
编辑推荐:
· 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应用必不可少的技术
点击右上角即可分享
微信分享提示