mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-08 00:43:04 +08:00
Update0704.二分查找 Go示例代码
添加注释、计算区间中点mid时使用位运算代替除法运算
This commit is contained in:
@ -251,19 +251,29 @@ class Solution:
|
||||
(版本一)左闭右闭区间
|
||||
|
||||
```go
|
||||
// 时间复杂度 O(logn)
|
||||
func search(nums []int, target int) int {
|
||||
high := len(nums)-1
|
||||
low := 0
|
||||
for low <= high {
|
||||
mid := low + (high-low)/2
|
||||
// 初始化左右边界
|
||||
left := 0
|
||||
right := len(nums) - 1
|
||||
|
||||
// 循环逐步缩小区间范围
|
||||
for left <= right {
|
||||
// 求区间中点
|
||||
mid := left + (right-left)>>1
|
||||
|
||||
// 根据 nums[mid] 和 target 的大小关系
|
||||
// 调整区间范围
|
||||
if nums[mid] == target {
|
||||
return mid
|
||||
} else if nums[mid] > target {
|
||||
high = mid-1
|
||||
} else if nums[mid] < target {
|
||||
left = mid + 1
|
||||
} else {
|
||||
low = mid+1
|
||||
right = mid - 1
|
||||
}
|
||||
}
|
||||
|
||||
// 在输入数组内没有找到值等于 target 的元素
|
||||
return -1
|
||||
}
|
||||
```
|
||||
@ -271,19 +281,29 @@ func search(nums []int, target int) int {
|
||||
(版本二)左闭右开区间
|
||||
|
||||
```go
|
||||
// 时间复杂度 O(logn)
|
||||
func search(nums []int, target int) int {
|
||||
high := len(nums)
|
||||
low := 0
|
||||
for low < high {
|
||||
mid := low + (high-low)/2
|
||||
// 初始化左右边界
|
||||
left := 0
|
||||
right := len(nums)
|
||||
|
||||
// 循环逐步缩小区间范围
|
||||
for left < right {
|
||||
// 求区间中点
|
||||
mid := left + (right-left)>>1
|
||||
|
||||
// 根据 nums[mid] 和 target 的大小关系
|
||||
// 调整区间范围
|
||||
if nums[mid] == target {
|
||||
return mid
|
||||
} else if nums[mid] > target {
|
||||
high = mid
|
||||
} else if nums[mid] < target {
|
||||
left = mid + 1
|
||||
} else {
|
||||
low = mid+1
|
||||
right = mid
|
||||
}
|
||||
}
|
||||
|
||||
// 在输入数组内没有找到值等于 target 的元素
|
||||
return -1
|
||||
}
|
||||
```
|
||||
|
Reference in New Issue
Block a user