您的位置:首页 > 其它

leetcode search for a range

2015-03-28 23:57 176 查看
class Solution {
public:
vector<int> searchRange(int A[], int n, int target) {
vector<int> ret;
ret.push_back(-1);
ret.push_back(-1);
if(n < 1){
return ret;
}
ret.clear();
int left = 0, right = n - 1;
int recleft = 0x7fffffff, recright = -1;
while(left <= right){
int mid = (left + right) >> 1;
if(A[mid] == target){
//search to left and right
int rec = mid;
while(rec >= 0 && A[rec] == target){
--rec;
}
//更新recleft和recright时对边界的处理
recleft = rec < 0 ? 0 : (rec + 1);
rec = mid;
while(rec < n && A[rec] == target){
++rec;
}
recright = rec >= n ? (n - 1): (rec - 1);
ret.push_back(recleft);
ret.push_back(recright);
//记得及时return!
return ret;
}
else if(A[mid] > target){
right = mid - 1;
}
else{
left = mid + 1;
}
}
ret.push_back(-1);
ret.push_back(-1);
return ret;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: