Last active
September 8, 2022 11:10
-
-
Save Josephchinedu/c7d5c59620ee7cbd4c53d8192a79e260 to your computer and use it in GitHub Desktop.
FIND THE FIRST AND LAST ELEMENT IN A SORTED ARRAY
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package main | |
import "fmt" | |
func main() { | |
var nums = []int{5, 7, 7, 8, 8, 10} | |
var target = 8 | |
var result = searchRange(nums, target) | |
fmt.Println(result) | |
} | |
func searchRange(nums []int, target int) []int { | |
var result = []int{-1, -1} | |
var left = 0 | |
var right = len(nums) - 1 | |
var mid = 0 | |
for left <= right { | |
mid = left + (right-left)/2 | |
if nums[mid] == target { | |
i := mid | |
// getting start index of target value | |
for i >= 0 && nums[i] == target { | |
i-- | |
} | |
result[0] = i + 1 | |
// getting end index of target value | |
i = mid | |
for i < len(nums) && nums[i] == target { | |
i++ | |
} | |
result[1] = i - 1 | |
return result | |
} else if nums[mid] > target { | |
right = mid - 1 | |
} else { | |
left = mid + 1 | |
} | |
} | |
return result | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment