zoukankan      html  css  js  c++  java
  • 在排序数组中查找元素的第一个和最后一个位置

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

    你的算法时间复杂度必须是 O(log n) 级别。

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

    function searchRange(nums, target) {
        let getPreNextIndex = (val,index,arr) => {
            let returnArr = [index,index]
            if(index == 0){
                for(let i = index + 1;i < arr.length;i++){
                    if(arr[i] == val){
                        returnArr[1] = i 
                    }else{
                        break;
                    }
                }
                return returnArr
            }
            if(index == arr.length -1){
                for(let i = index - 1;i > -1;i--){
                    if(arr[i] == val){
                        returnArr[0] = i 
                    }else{
                        break
                    }
                }
                return returnArr
            }
            for(let i = index - 1;i > -1;i--){
                if(arr[i] == val){
                    returnArr[0] = i 
                }else{
                    break
                }
            }
            for(let i = index + 1;i < arr.length;i++){
                if(arr[i] == val){
                    returnArr[1] = i 
                }else{
                    break;
                }
            }
            return returnArr
        }
        if(nums.length == 1){
            if(nums[0] == target){
                return [0,0]
            }
            return [-1,-1]
        }
        let start = 0,end = nums.length - 1;
        while(start <= end){
            let mid = parseInt((start + end) / 2);
            if(target == nums[mid]){
                return getPreNextIndex(mid,nums,target)
            }else if(target > nums[mid]){
                start = mid + 1
            }else if(target < nums[mid]){
                end = mid - 1
            }
        }
        return [-1 ,-1]
    }

    Leecode提交通过

    以自己现在的努力程度,还没有资格和别人拼天赋
  • 相关阅读:
    商品表(spu)、规格表(sku)设计
    Links
    About
    AFO
    口胡题
    NOIP2014 飞扬的小鸟
    CSP2019 Emiya 家今天的饭
    CSP2019 括号树
    CSP-J2019 加工零件
    CSP-J2019 纪念品
  • 原文地址:https://www.cnblogs.com/zhenjianyu/p/13345927.html
Copyright © 2011-2022 走看看