Update 二分查找详解.md

更新一些注释
This commit is contained in:
MarineJoker
2020-11-12 08:17:52 +08:00
committed by GitHub
parent 3844dfcaf8
commit 3249c6c9c4

View File

@ -537,19 +537,19 @@ def left_bound(nums, target):
while left < right:
mid = (left + right) // 2
if nums[mid] == target:
# 锁定边界
# 锁定左侧边界
right = mid
elif nums[mid] < target:
left = mid + 1
elif nums[mid] > target:
right = mid
# 检查越界情况
# 检查left越界情况
if left >= len(nums) or nums[left] != target:
return -1
return left
# 寻找右侧边界的二分搜索,开区间写法
# 寻找右侧边界的二分搜索,开区间写法
def right_bound(nums, target):
left, right = 0, len(nums)
if right == 0:
@ -557,48 +557,48 @@ def right_bound(nums, target):
while left < right:
mid = (left + right) // 2
if nums[mid] == target:
# 锁定边界
# 锁定右侧边界
left = mid + 1
elif nums[mid] < target:
left = mid + 1
elif nums[mid] > target:
right = mid
# 检查越界情况
if right < 0 or nums[left - 1] != target:
if left == 0 or nums[left - 1] != target:
return -1
return left - 1
# 左右边界闭区间写法,统一逻辑
# 寻找左侧边界的二分搜索,闭区间写法
def left_bound(nums, target):
left, right = 0, len(nums) - 1
while left <= right:
mid = (left + right) // 2
if nums[mid] == target:
# 锁定边界
# 锁定左侧边界
right = mid - 1
elif nums[mid] < target:
left = mid + 1
elif nums[mid] > target:
right = mid - 1
# 检查越界情况
# 检查left越界情况
if left >= len(nums) or nums[left] != target:
return -1
return left
# 寻找右侧边界的二分搜索,闭区间写法
def right_bound(nums, target):
left, right = 0, len(nums) - 1
while left <= right:
mid = (left + right) // 2
if nums[mid] == target:
# 锁定边界
# 锁定右侧边界
left = mid + 1
elif nums[mid] < target:
left = mid + 1
elif nums[mid] > target:
right = mid - 1
# 检查越界情况
# 检查right越界情况
if right < 0 or nums[right] != target:
return -1
return right