1.寻找一个数
# 注意:python 代码由 chatGPT🤖 根据我的 java 代码翻译,旨在帮助不同背景的读者理解算法逻辑。
# 本代码不保证正确性,仅供参考。如有疑惑,可以参照我写的 java 代码对比查看。
# LeeCode解法
# 二分查找 - Python代码
def binarySearch(nums:List[int], target:int) -> int:
left = 0;
right = len(nums) - 1; # 注意
while(left <= right):
mid = left + (right - left) // 2; # 防止整型溢出
if(nums[mid] == target):
return mid;
elif(nums[mid] < target):
left = mid + 1; # 注意
elif(nums[mid] > target):
right = mid - 1; # 注意
return -1;
2.寻找一个边界
左侧边界:
# 注意:python 代码由 chatGPT🤖 根据我的 java 代码翻译,旨在帮助不同背景的读者理解算法逻辑。
# 本代码不保证正确性,仅供参考。如有疑惑,可以参照我写的 java 代码对比查看。
def left_bound(nums: List[int], target: int) -> int:
left = 0
right = nums.length; # 注意
while left < right: # 注意
mid = left + (right - left) // 2
if nums[mid] == target:
right = mid
elif nums[mid] < target:
left = mid + 1
elif nums[mid] > target:
right = mid; # 注意
return left
右侧边界
# 注意:python 代码由 chatGPT🤖 根据我的 java 代码翻译,旨在帮助不同背景的读者理解算法逻辑。
# 本代码不保证正确性,仅供参考。如有疑惑,可以参照我写的 java 代码对比查看。
def right_bound(nums, target):
left, right = 0, len(nums)
while left < right:
mid = left + (right - left) // 2
if nums[mid] == target:
left = mid + 1 # 注意
elif nums[mid] < target:
left = mid + 1
elif nums[mid] > target:
right = mid
return left - 1 # 注意