34. Find First and Last Position of Element in Sorted Array
Given an array of integers nums sorted in ascending order, find the starting and ending position of a given target value.
Your algorithm's runtime complexity must be in the order of O(log n).
If the target is not found in the array, return [-1, -1].
Example 1:
Input: nums = [5,7,7,8,8,10], target = 8
Output: [3,4]Example 2:
Input: nums = [5,7,7,8,8,10], target = 6
Output: [-1,-1]// STL lower_bound and upper_bound Method
vector<int> searchRange(vector<int>& nums, int target) { // time: O(logn); space: O(1)
vector<int> res(2, -1);
if (nums.empty()) return res;
auto start = lower_bound(nums.begin(), nums.end(), target);
if (start == nums.end() || *start != target) return res;
else res[0] = start - nums.begin();
auto end = upper_bound(nums.begin(), nums.end(), target);
res[1] = end - nums.begin() - 1;
return res;
}Last updated
Was this helpful?