给定一个排序的整数数组,找到给定目标值的起始位置和结束位置。
算法的运行时复杂度必须是O(log n)的顺序。
如果在数组中找不到目标,返回[-1,-1 ]。
例如,给定[5, 7, 7,8, 8, 10 ]和目标值8,返回[3, 4 ]。
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
class Solution
{
public:
vector<int> searchRange(vector<int>& nums, int target)
{
const int l = distance(nums.begin(), lower_bound(nums.begin(), nums.end(), target));
const int u = distance(nums.begin(), prev(upper_bound(nums.begin(), nums.end(),target)));
if (nums[l] != target) // not found
return vector<int> (-1, -1);
else
return vector<int> (l, u);
}
};