日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

es6 取数组的第一个和最后一个_JS算法题之每日一题- 17.在排序数组中查找元素的第一个和最后一个位置...

發布時間:2025/3/19 javascript 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 es6 取数组的第一个和最后一个_JS算法题之每日一题- 17.在排序数组中查找元素的第一个和最后一个位置... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

微信公眾號:

題 目

Q:給定一個按照升序排列的整數數組 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]

答 案

const searchRange = (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];

};

const 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;

}

}

總結

以上是生活随笔為你收集整理的es6 取数组的第一个和最后一个_JS算法题之每日一题- 17.在排序数组中查找元素的第一个和最后一个位置...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。