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

Leetcode34查找排序数组中元素的第一个和最后一个位置(二分法)

时间:2023-03-27 15:34:02 JavaScript

Leetcode34查找一个元素在一个排序数组中的第一个和最后一个位置(二元法)给定一个升序排列的整数数组nums,和目标值目标。找出给定目标值在数组中的开始和结束位置。如果数组中不存在目标值target,则返回[-1,-1]。答案:/**\*@param{number[]}nums\*@param{number}target\*@return{number[]}*/varsearchRange=function(nums,target){letleft=0letright=nums.lengthletcenter=falsewhile(lefttarget){right=mid}else{center=midleft=midright=midbreak}}if(center===false){return[-1,-1]}else{while(nums[left]==target){left--}while(nums[right]==target){right++}return[左+1,右-1]}};解题首先找到nums[mid]===target的mid,然后根据找到的target从左向右延伸,找到符合要求的起始和结束位置,因为在simple中是正常的二分法如果没有重复,有mid,我们只需要返回对应的mid,但是这道题可能有零个,也可能有多个,所以我们选择在循环后加一个额外的标记来判断是否有这样的中间位置完成了。健康)状况。