当前位置: 首页 > Web前端 > JavaScript

34.查找排序数组中元素的第一个和最后一个位置-算法(leetode,附思维导图+全解)300题

时间:2023-03-26 22:47:32 JavaScript

零题目:算法(leetode,附思维导图+全解)300题(34)求元素在排序数组中的第一个和最后一个位置1题目description2解决方案概览(思维导图)3所有解决方案1解决方案11)代码://解决方案1"忽略要求,直接调用indexOf,lastIndexOf"varsearchRange=function(nums,target){return[nums.indexOf(target),nums.lastIndexOf(target)];};2Scheme21)Code://Scheme2"普通版双指针".//思路://1)状态初始化//2.1)左移求左值//2.2)右移求右值//3)根据当前左右值返回不同的结果varsearchRange=function(nums,target){//1)状态初始化constl=nums.length;让左=0,右=l-1;//2.1)通过向左移动找到left的值while(lefttarget){left=-1;休息;}else{左++;}}//2.2)通过向右移动,找到right的值while(right>=0){if(nums[right]===target){break;}elseif(nums[right]{letleft=0,对=数字。长度-1,ans=nums。长度;while(left<=right){constmid=Math.floor((left+right)/2);if(nums[middle]>target||(lower&&nums[middle]>=target)){right=mid--1;ans=中间;}else{左=中+1;}}返回ans;}varsearchRange=function(nums,target){constleftIdx=binarySearch(nums,target,true);constrightIdx=binarySearch(nums,target,false)--1;让ans=[-1,-1];如果(leftIdx<=rightIdx&&rightIdx