力扣链接:. - 力扣(LeetCode)
视频讲解:手把手带你撕出正确的二分法 | 二分查找法 | 二分搜索法 | LeetCode:704. 二分查找_哔哩哔哩_bilibili
文字讲解:代码随想录
自己觉得比较难的点:right left 与mid 加减的关系 这里其实可以画图解决
左闭右闭
func search(nums []int, target int) int {
//定义左右
left := 0
right := len(nums)-1
//开始循环
for left <= right {
//找到数组中间下标
mid := (left + right) / 2
//这里可以看图来想一下为什么这样写
if target < nums[mid] {
right = mid -1
}else if target > nums[mid] {
left = mid + 1
}else{
return mid
}
}
return -1
}
左开右开
func search(nums []int, target int) int {
left := 0
right := len(nums)
for left < right {
mid := (left + right) / 2
if target < nums[mid] {
right = mid
}else if target > nums[mid] {
left = mid + 1
}else{
return mid
}
}
return -1
}