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

## 27 Dec 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.

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`

class Solution:
def searchRange(self, nums: List[int], target: int) -> List[int]:
def binarySearchLeft(nums, target):
left = 0
right = len(nums) – 1
while left <= right:
middle = left + (right – left)//2
if nums[middle] < target:
left = middle + 1
else:
right = middle – 1
return left

def binarySearchRight(nums, target):
left = 0
right = len(nums) – 1
while left <= right:
middle = left + (right – left)//2
if nums[middle] <= target:
left = middle + 1
else:
right = middle – 1
return right

left = binarySearchLeft(nums, target)
right = binarySearchRight(nums, target)
print(left)
print(right)
if left <= right:
return [left, right]
else:
return [-1, -1]