
详细思路
找到mid,如果正好是target,两头扩散输出答案
精确定义
left左数组第一个
mid左数组最后一个右数组第一个
right右数组最后一个
i判断好了的左边
j判断好了的右边
class Solution { public: vector<int> searchRange(vector<int>& nums, int target) { int n=nums.size(); if(n==0)return {-1,-1}; int left=0,right=n-1; while(left<=right){ int mid=left+(right-left)/2; if(nums[mid]==target){ int i=mid,j=mid; while(i-1>=0&&nums[i-1]==target)i--; while(j+1<=n-1&&nums[j+1]==target)j++; return {i,j}; } else if(target<nums[mid])right=mid-1; else if(target>nums[mid])left=mid+1; } return {-1,-1}; } };
浙公网安备 33010602011771号