mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-09 03:34:02 +08:00
添加 34. 在排序数组中查找元素的第一个和最后一个位置 Go版本
This commit is contained in:
@ -389,6 +389,54 @@ class Solution:
|
|||||||
### Go
|
### Go
|
||||||
|
|
||||||
```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
|
### JavaScript
|
||||||
|
Reference in New Issue
Block a user