mirror of
https://github.com/chefyuan/algorithm-base.git
synced 2025-08-12 17:52:27 +00:00
添加Go语言题解
This commit is contained in:
@@ -166,3 +166,45 @@ class Solution {
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Go Code:
|
||||
|
||||
```go
|
||||
func searchRange(nums []int, target int) []int {
|
||||
upper := upperBound(nums, target)
|
||||
lower := lowerBound(nums, target)
|
||||
|
||||
if (upper < lower) {
|
||||
return []int{-1, -1}
|
||||
}
|
||||
return []int{lower, upper}
|
||||
}
|
||||
|
||||
// upperBound 计算上边界
|
||||
func upperBound(nums []int, target int) int {
|
||||
l, r := 0, len(nums) - 1
|
||||
for l <= r {
|
||||
m := l + (r - l) / 2
|
||||
if target >= nums[m] {
|
||||
l = m + 1
|
||||
} else if target < nums[m] {
|
||||
r = m - 1
|
||||
}
|
||||
}
|
||||
return r
|
||||
}
|
||||
|
||||
// lowerBound 计算下边界
|
||||
func lowerBound(nums []int, target int) int {
|
||||
l, r := 0, len(nums) - 1
|
||||
for l <= r {
|
||||
m := l + (r - l) / 2
|
||||
if target <= nums[m] {
|
||||
r = m - 1
|
||||
} else if target > nums[m] {
|
||||
l = m + 1
|
||||
}
|
||||
}
|
||||
return l
|
||||
}
|
||||
```
|
||||
|
Reference in New Issue
Block a user