偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

在排序數(shù)組中查找元素的第一個和最后一個位置

開發(fā) 前端
給定一個按照升序排列的整數(shù)數(shù)組 nums ,和一個目標值 target 。找出給定目標值在數(shù)組中的開始位置和結(jié)束位置。

[[432713]]

給定一個按照升序排列的整數(shù)數(shù)組 nums ,和一個目標值 target 。找出給定目標值在數(shù)組中的開始位置和結(jié)束位置。

你的算法時間復(fù)雜度必須是 O(logn)級別。

如果數(shù)組中不存在目標值,返回 [-1, -1] 。

示例 1:

  1. 輸入: nums = [5,7,7,8,8,10], target = 8 
  2. 輸出: [3,4] 

示例 2:

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

解答一:findIndex、lastIndexOf

findIndex() 方法返回數(shù)組中滿足提供的測試函數(shù)的第一個元素的索引。若沒有找到對應(yīng)元素則返回-1。

lastIndexOf() 方法返回指定元素(也即有效的 JavaScript 值或變量)在數(shù)組中的最后一個的索引,如果不存在則返回 -1。

解答二:二分查找

  1. let searchRange = function(nums, target) { 
  2.     return [leftSearch(nums, target), rightSearch(nums, target)] 
  3.  
  4. let leftSearch = function(nums, target) { 
  5.     let low = 0,  
  6.         high = nums.length - 1, 
  7.         mid 
  8.     while (low <= high) { 
  9.         mid = Math.floor((low+high)/2) 
  10.         if (nums[mid] < target) { 
  11.             low = mid + 1 
  12.         } else if (nums[mid] > target) { 
  13.             high = mid - 1 
  14.         } else if (nums[mid] === target) { 
  15.             // 這里不返回,繼續(xù)收縮左側(cè)邊界 
  16.             high = mid - 1 
  17.         } 
  18.     } 
  19.     // 最后檢查 low 是否越界或命中 
  20.     if (low >= nums.length || nums[low] != target) 
  21.         return -1 
  22.     return low 
  23.  
  24.  
  25. let rightSearch = function (nums, target) { 
  26.     let low = 0,  
  27.         high = nums.length - 1, 
  28.         mid 
  29.     while (low <= high) { 
  30.         mid = Math.floor((low+high)/2) 
  31.         if (nums[mid] < target) { 
  32.             low = mid + 1 
  33.         } else if (nums[mid] > target) { 
  34.             high = mid - 1 
  35.         } else if (nums[mid] === target) { 
  36.             // 這里不返回,繼續(xù)收縮右側(cè)邊界 
  37.             low = mid + 1 
  38.         } 
  39.     } 
  40.     // 最后檢查 high 是否越界或命中 
  41.     if (high < 0 || nums[high] != target) 
  42.         return -1 
  43.     return high 

復(fù)雜度分析:

  • 時間復(fù)雜度:O(logn)
  • 空間復(fù)雜度:O(1)

 

leetcode:https://leetcode-cn.com/problems/find-first-and-last-position-of-element-in-sorted-array/

 

責(zé)任編輯:武曉燕 來源: 三分鐘學(xué)前端
相關(guān)推薦

2021-12-13 11:31:36

排序數(shù)組數(shù)據(jù)結(jié)構(gòu)算法

2024-03-18 09:50:18

Selenium元素Python

2024-06-06 08:46:26

彈性布局元素瀏覽器

2020-11-13 07:08:51

Spring Boot應(yīng)用Spring

2010-07-05 17:00:39

SQL server

2013-10-30 22:10:28

Clouda程序

2022-10-17 10:28:05

Web 組件代碼

2023-09-21 22:43:17

Django框架

2021-04-07 13:38:27

Django項目視圖

2010-07-30 14:58:06

Flex應(yīng)用

2012-02-08 11:15:38

HibernateJava

2011-03-03 21:04:08

bug程序員

2011-03-21 14:24:13

Debian 6

2013-01-14 09:44:58

JavaScriptJSJS框架

2021-08-26 07:43:44

vectorerase錯誤

2014-07-21 10:25:12

ENode開發(fā)論壇

2011-06-24 13:38:32

QT 編譯 安裝

2021-11-02 08:00:00

機器學(xué)習(xí)API技術(shù)

2025-05-28 09:04:00

谷歌AI搜索

2019-12-31 08:00:00

DebianLinuxApple Swift
點贊
收藏

51CTO技術(shù)棧公眾號