# 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;
    }
};