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
        }
    }
  • 相关阅读:
    DML数据操作语言练习
    表的操作练习
    20151218--地区导航习题
    20151217--Ajax的一点补充
    02151216--Ajax
    json(转)
    Node.js(转) -- 临时来说还看不懂!
    20151113--JSTL
    20151210--MVC
    链表(转)
  • 原文地址:https://www.cnblogs.com/lhh520/p/10392718.html
Copyright © 2011-2022 走看看