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 };

两个二分,问题不大

posted on 2018-07-08 16:12  高数考了59  阅读(133)  评论(0)    收藏  举报