• 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
        }
    }
  • 相关阅读:
    查询缓存
    Indexes
    计院生活第三章 狂轰乱炸(上)
    JAVA实现文件树
    OGNL表达式语言介绍
    DOM4J使用教程
    css 优先级
    《JavaScript凌厉开发 Ext详解与实践》3月5日开始上架销售
    Drools 规则引擎
    OLTP和OLAP区别
  • 原文地址:https://www.cnblogs.com/lhh520/p/10392718.html
Copyright © 2020-2023  润新知