Moment For Technology

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
About
mo4tech.com (Moment For Technology) is a global community with thousands techies from across the global hang out!Passionate technologists, be it gadget freaks, tech enthusiasts, coders, technopreneurs, or CIOs, you would find them all here.