您的位置:首页 > 其它

34 Search for a Range(目标数的范围Medium)

2015-06-13 01:19 621 查看
题目意思:递增数组,找到目标数的范围,找不到则返回[-1,-1]

思路:折半查找

class Solution {
public:
vector<int> searchRange(vector<int>& nums, int target) {
int start=0,end=nums.size()-1;
vector<int> ans;
while(start<=end){
int temp=(start+end)/2;
if(nums[temp]>target){
end=temp-1;
}
else if(nums[temp]<target){
start=temp+1;
}
else if(nums[temp]==target){
int flag1=temp,flag2=temp;
while(flag1>0&&nums[flag1-1]==target){
--flag1;
}
while(flag2<nums.size()-1&&nums[flag2+1]==target){
++flag2;
}
ans.push_back(flag1);
ans.push_back(flag2);
return ans;
}
}
ans.push_back(-1);
ans.push_back(-1);
return ans;
}
};


时间复杂度:O(logn)

运行时间:12ms

代码太冗余了,以后再精简吧
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: