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

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

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

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

    示例 1:

    输入: nums = [5,7,7,8,8,10], target = 8
    输出: [3,4]

    示例 2:

    输入: nums = [5,7,7,8,8,10], target = 6
    输出: [-1,-1]

    答案参考:
    /**
     * @param {number[]} nums
     * @param {number} target
     * @return {number[]}
     */
    var searchRange = function (nums, target) {
        let targetIndex = binarySearch(nums, target, 0, nums.length - 1)
        if (targetIndex == -1) return [-1, -1]
        let l = targetIndex, r = targetIndex
        while(l > 0 && nums[l - 1] == target){
            l--
        }
        while(r < nums.length - 1 && nums[r + 1] == target){
            r++
        }
        return [l, r]
    };
    
    function binarySearch(arr, val, lo, hi) {
        if (hi < lo) return -1
        let mid = lo + parseInt((hi - lo) / 2)
    
        if (val < arr[mid]) {
            return binarySearch(arr, val, lo, mid - 1)
        } else if (val > arr[mid]) {
            return binarySearch(arr, val, mid + 1, hi)
        } else {
            return mid
        }
    }
  • 相关阅读:
    操作系统面试题(四)
    计算机网络面试题(三)
    redis和mongodb面试题(一)
    MySQL面试题(二)
    数据库基础面试题(一)
    RoBERTa模型总结
    BERT模型总结
    动态规划-Dynamic Programming(DP)
    XGBoost原理学习总结
    re模块的使用
  • 原文地址:https://www.cnblogs.com/lhh520/p/10392718.html
Copyright © 2011-2022 走看看