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.
Example 1
Input: nums = [5,7,7,8,8,10], target = 8
Output: [3,4]
Explanation: 8 first appears at index 3 and last appears at index 4, so the answer is [3,4].
Example 2
Input: nums = [5,7,7,8,8,10], target = 6
Output: [-1,-1]
Explanation: 6 would fall between 5 and 7, but it does not appear, so the answer is [-1,-1].
Example 3
Input: nums = [], target = 0
Output: [-1,-1]
Explanation: The array is empty, so the target cannot be found.
Run binary search twice: once biased to keep going left after a hit (finding the first index), once biased to keep going right (finding the last). Together they bracket the target's range in O(log n).
Run checks all cases above. Submit evaluates all test cases.