博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode34.在排序数组中查找元素的第一个和最后一个位置 JavaScript
阅读量:7122 次
发布时间:2019-06-28

本文共 949 字,大约阅读时间需要 3 分钟。

给定一个按照升序排列的整数数组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    }}复制代码

转载地址:http://etael.baihongyu.com/

你可能感兴趣的文章
java内存回收机制
查看>>
Install MariaDB by yum use Docker centos6 image
查看>>
Android应用架构之MVP实现
查看>>
如何用消息系统避免分布式事务?
查看>>
viewport 最佳实践
查看>>
多feature测试时后端测试环境管理的一种方案设想
查看>>
HashMap: 通俗分析核心源码
查看>>
CSS设置居中的方案总结-超全
查看>>
Feathers 入门
查看>>
css知识:flex 、bfc
查看>>
设计模式系列之「建造者模式」
查看>>
Linux部署Nuxt应用一条龙
查看>>
分布式系统关注点——先写DB还是「缓存」?
查看>>
iOS 事件传递底层实现代码
查看>>
区块链安全:实现公链双花攻击的多种方法
查看>>
解决微信小程序自定义弹窗时,背景页面可滚动
查看>>
【django】【my_blog】编辑功能
查看>>
JavaScript设计模式系列--发布订阅模式
查看>>
数据结构—线性表
查看>>
chrome浏览器字体小于12px的解决方式
查看>>