提交 3844dfca 编写于 作者: M MarineJoker

binarySearch add python3 version

上级 36f59b6f
......@@ -508,4 +508,98 @@ int right_bound(int[] nums, int target) {
<img src="../pictures/qrcode.jpg" width=200 >
</p>
======其他语言代码======
\ No newline at end of file
======其他语言代码======
[MarineJoker](https://github.com/MarineJoker) 提供 Python3 代码
```python
# 基本二分搜索
def binarySearch(nums, target):
left = 0
right = len(nums) - 1
while left <= right:
mid = (left + right) // 2
if nums[mid] == target:
# 直接返回
return mid
elif nums[mid] < target:
left = mid + 1
elif nums[mid] > target:
right = mid - 1
# 直接返回
return -1
# 寻找左侧边界的二分搜索,开区间写法
def left_bound(nums, target):
left, right = 0, len(nums)
if right == 0:
return -1
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
# 检查越界情况
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:
return -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
# 检查越界情况
if right < 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
# 检查越界情况
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
# 检查越界情况
if right < 0 or nums[right] != target:
return -1
return right
```
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册