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