本题源自leetcode 34
-----------------------------------------------------------
思路:用二分查找的思路,首先找出最左边的target,就是当target <= num【mid】 end = mid;
2 然后 第一次循环结束后判断 start 等于 target,就是最左边的。然后找最右边的target 一样用 二分查找的方法
代码:
vector<int> searchRange(vector<int>& nums, int target) {
int n = nums.size();
vector<int> ret(2, -1);
if(n == 0)
return ret;
int i = 0, j = n - 1;
while (i < j) //找最左边的
{
int mid = (i + j) /2;
if (nums[mid] < target)
i = mid + 1;
else
j = mid;
}
if (nums[i]!=target)
return ret;
else
ret[0] = i;
// 找最右边的
j = n-1; //
while (i < j)
{