添加 34. 在排序数组中查找元素的第一个和最后一个位置 Go版本

This commit is contained in:
HanMengnan
2022-01-11 12:48:46 +08:00
parent 6de5da719d
commit b371126615

View File

@ -389,6 +389,54 @@ class Solution:
### Go
```go
func searchRange(nums []int, target int) []int {
leftBorder := searchLeftBorder(nums, target)
rightBorder := searchRightBorder(nums, target)
if leftBorder == -2 || rightBorder == -2 { // 情况一
return []int{-1, -1}
} else if rightBorder-leftBorder > 1 { // 情况三
return []int{leftBorder + 1, rightBorder - 1}
} else { // 情况二
return []int{-1, -1}
}
}
func searchLeftBorder(nums []int, target int) int {
left, right := 0, len(nums)-1
leftBorder := -2 // 记录一下leftBorder没有被赋值的情况
for left <= right {
middle := (left + right) / 2
if target == nums[middle] {
right = middle - 1
// 左边界leftBorder更新
leftBorder = right
} else if target > nums[middle] {
left = middle + 1
} else {
right = middle - 1
}
}
return leftBorder
}
func searchRightBorder(nums []int, target int) int {
left, right := 0, len(nums)-1
rightBorder := -2 // 记录一下rightBorder没有被赋值的情况
for left <= right {
middle := (left + right) / 2
if target == nums[middle] {
left = middle + 1
// 右边界rightBorder更新
rightBorder = left
} else if target > nums[middle] {
left = middle + 1
} else {
right = middle - 1
}
}
return rightBorder
}
```
### JavaScript