1 class Solution 2 { 3 public: 4 vector<int> searchRange(vector<int>& nums, int target) 5 { 6 int sz=nums.size(); 7 if(sz==0) 8 return {-1,-1}; 9 if(target<nums[0]||target>nums[sz-1]) 10 return {-1,-1}; 11 int left=0,right=sz-1; 12 int resleft=0,resright=0; 13 while(left<right) 14 { 15 int mid=left+((right-left)>>1); 16 int cur=nums[mid]; 17 if(cur>=target) 18 right=mid; 19 else 20 left=mid+1; 21 } 22 resleft=left; 23 if(nums[resleft]!=target) 24 return {-1,-1}; 25 left=0,right=sz-1; 26 while(left<right) 27 { 28 int mid=left+((right-left)>>1); 29 int cur=nums[mid]; 30 if(cur>target) 31 right=mid; 32 else 33 left=mid+1; 34 } 35 resright=left; 36 if(nums[resright]==target) 37 return {resleft,resright}; 38 else 39 return {resleft,resright-1}; 40 } 41 };
两个二分,问题不大
浙公网安备 33010602011771号