您的位置:首页 > 其它

leetCode_Search for a Range(二分查找)

2016-06-16 09:55 267 查看
题意:给定一个排序好的数组,找出该数组中等于某个值得所有元素的下标,返回第一个下标和最后一个下标

vector<int> searchRange(vector<int>& a, int target) {
int length=a.size(),left,right,middle,li=-1,ri=-1;
vector<int> ans;
left=0;
right=length-1;
while(left<=right)
{
middle=(left+right)/2;
if(a[middle]==target&&(middle==0||a[middle-1]<target))
{
li=middle;
break;
}
else if(a[middle]>=target) right=middle-1;
else left=middle+1;
}
left=0;
right=length-1;
while(left<=right)
{
middle=(left+right)/2;
if(a[middle]==target&&(middle==length-1||a[middle+1]>target))
{
ri=middle;
break;
}
else if(a[middle]>target) right=middle-1;
else left=middle+1;
}
ans.push_back(li);
ans.push_back(ri);
return ans;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: