Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit b371126

Browse files
添加 34. 在排序数组中查找元素的第一个和最后一个位置 Go版本
1 parent 6de5da7 commit b371126

File tree

1 file changed

+48
-0
lines changed

1 file changed

+48
-0
lines changed

‎problems/0034.在排序数组中查找元素的第一个和最后一个位置.md‎

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -389,6 +389,54 @@ class Solution:
389389
### Go
390390

391391
```go
392+
func searchRange(nums []int, target int) []int {
393+
leftBorder := searchLeftBorder(nums, target)
394+
rightBorder := searchRightBorder(nums, target)
395+
396+
if leftBorder == -2 || rightBorder == -2 { // 情况一
397+
return []int{-1, -1}
398+
} else if rightBorder-leftBorder > 1 { // 情况三
399+
return []int{leftBorder + 1, rightBorder - 1}
400+
} else { // 情况二
401+
return []int{-1, -1}
402+
}
403+
}
404+
405+
func searchLeftBorder(nums []int, target int) int {
406+
left, right := 0, len(nums)-1
407+
leftBorder := -2 // 记录一下leftBorder没有被赋值的情况
408+
for left <= right {
409+
middle := (left + right) / 2
410+
if target == nums[middle] {
411+
right = middle - 1
412+
// 左边界leftBorder更新
413+
leftBorder = right
414+
} else if target > nums[middle] {
415+
left = middle + 1
416+
} else {
417+
right = middle - 1
418+
}
419+
}
420+
return leftBorder
421+
}
422+
423+
func searchRightBorder(nums []int, target int) int {
424+
left, right := 0, len(nums)-1
425+
rightBorder := -2 // 记录一下rightBorder没有被赋值的情况
426+
for left <= right {
427+
middle := (left + right) / 2
428+
if target == nums[middle] {
429+
left = middle + 1
430+
// 右边界rightBorder更新
431+
rightBorder = left
432+
} else if target > nums[middle] {
433+
left = middle + 1
434+
} else {
435+
right = middle - 1
436+
}
437+
}
438+
return rightBorder
439+
}
392440
```
393441

394442
### JavaScript

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /