# 34. Find the first and last position of an element in the sorted array

Posted on Dec. 2, 2022, 7:37 p.m. by Anvi Garg
Category: The back-end Tag: The back-end

### The title

Given an array of ascending integers, nums, and a target value. Find the start and end positions in the array for the given target value.

Return [-1, -1] if there is no target value in the array.

Example 1:

``Input: nums = [5,7,7,8,8,10], target = 8Copy the code``

Example 2:

``Nums = [5,7,7,8,8,10], target = 6 output: [-1,-1]Copy the code``

Example 3:

``Nums = [], target = 0 Output: [-1,-1]Copy the code``

Tip:

``Length = 105-109 = nums[I] = 109 Nums is a non-decreasing array -109 = target = 109Copy the code``

### Train of thought

I'm going to look for the first index l that is equal to the target, starting from the left,

I'm going to look for the first index r that is equal to the target, starting from the right,

Return subvalue, if not, return [-1,-1]

### Write your own GO code

``func searchRange(nums []int, target int) []int { l := 0 r := len(nums) - 1 if l == r  nums[l] == target { return []int{l, r} } for l  r { for nums[l] ! = target  l  r { l++ } for nums[r] ! = target  l  r { r-- } if nums[l] == target  nums[r] == target { return []int{l, r} } } return []int{-1, -1} }Copy the code``

### Official GO code

``func searchRange(nums []int, target int) []int { leftmost := sort.SearchInts(nums, target) if leftmost == len(nums) || nums[leftmost] ! = target { return []int{-1, -1} } rightmost := sort.SearchInts(nums, target + 1) - 1 return []int{leftmost, rightmost} }Copy the code``
Search