34. Find First and Last Position of Element in Sorted Array 寻找排序数组目标的开始和结束
34. Find First and Last Position of Element in Sorted Array 寻找排序数组目标的开始和结束
解法:二分查找 关键在于如何定位左端点与右端点
vector<int> searchRange(vector<int>& nums, int target) {
int start=0;
int end=nums.size()-1;
vector<int> res(2, -1);
if (end<0) return res;
// 大于等于的情况尽量移动 end,惰性移动start
while(start < end) {
int mid=(start+end)>>1;
if (nums[mid]<target) start=mid+1;
else end=mid;
}
if (nums[start]!=target) return res;
else res[0]=start;
end=nums.size()-1;
while(start < end) {
// 如果start和end位置都等于 target,需要start向右边靠使循环结束
int mid=((start+end)>>1)+1;
if (nums[mid]>target) end=mid-1;
else start=mid;
}
res[1]=end;
return res;
}#二分