代码改变世界

leetcode - Search for a Range

2013-11-06 10:45  张汉生  阅读(132)  评论(0编辑  收藏  举报

 

 1 class Solution {
 2 public:
 3     vector<int> searchRange(int A[], int n, int target) {
 4         // IMPORTANT: Please reset any member data you declared, as
 5         // the same Solution instance will be reused for each test case.
 6         if (n<=0)
 7             return vector<int>(2,-1);
 8         int l = 0, r = n-1;
 9         int m;
10         int left, right;
11         while (l<=r){
12             m = (l+r)/2;
13             if (A[m]>=target)
14                 r = m-1;
15             else 
16                 l = m+1;
17         }
18         if (A[m]==target)
19             left = m;
20         else if (m+1<n && A[m+1]==target)
21             left = m +1;
22         else 
23             return vector<int>(2,-1);
24         l = left, r=n-1;
25         while (l<=r){
26             m = (l+r)/2;
27             if (A[m]>target)
28                 r=m-1;
29             else l = m+1;
30         }
31         if (A[m]==target)
32             right = m;
33         else if (m-1>=left && A[m-1]==target)
34             right = m-1;
35         vector<int> rlt;
36         rlt.push_back(left);
37         rlt.push_back(right);
38         return rlt;
39     }
40 };