# 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]
# Solution
Approach 1: Binary search.
# Code (Python)
Approach 1:
# Code (C++)
Approach 1:
class Solution {
private:
int searchTarget(vector<int>& nums, int target) {
int head = 0;
int tail = nums.size() - 1;
while (head <= tail)
{
int mid = head + (tail - head) / 2;
if (target <= nums[mid])
tail = mid - 1;
else
head = mid + 1;
}
return head;
}
public:
vector<int> searchRange(vector<int>& nums, int target) {
vector<int> targetRange;
int head = -1;
int tail = -1;
if (nums.size() > 0)
{
head = searchTarget(nums, target);
if (head >= nums.size() || nums[head] != target)
head = -1;
tail = searchTarget(nums, target + 1) - 1;
if (tail < 0 || nums[tail] != target)
tail = -1;
}
targetRange.push_back(head);
targetRange.push_back(tail);
return targetRange;
}
};