Find First and Last Position of Element in Sorted Array

Posted by Bill on October 7, 2023

34. Find First and Last Position of Element in Sorted Array

Given an array of integers nums sorted in non-decreasing order, find the starting and ending position of a given target value.

If target is not found in the array, return [-1, -1].

You must write an algorithm with O(log n) runtime complexity.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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]
Example 3:

Input: nums = [], target = 0
Output: [-1,-1]


Constraints:

0 <= nums.length <= 105
-109 <= nums[i] <= 109
nums is a non-decreasing array.
-109 <= target <= 109

Solution

1
2
3
4
5
6
7
8
9
10
11
12
13
14
vector<int> searchRange(vector<int>& nums, int target) {
    int left = -1, right = -1;
    for (int i = 0; i < nums.size(); i++) {
        if (nums[i] == target) {
            left = i;
            right = left;
            for (int j = left; j < nums.size() && nums[j] == target; j++) {
                right = j;
            }
            break;
        }
    }
    return {left, right};
}