Я изучал шаблон бинарного поиска II на Leetcode. https://leetcode.com/explore/learn/card/binary-search/126/template-ii/937/
def binarySearch(nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: int
"""
if len(nums) == 0:
return -1
left, right = 0, len(nums)
while left < right:
mid = (left + right) // 2
if nums[mid] == target:
return mid
elif nums[mid] < target:
left = mid + 1
else:
right = mid
# Post-processing:
# End Condition: left == right
if left != len(nums) and nums[left] == target:
return left
return -1
Говорят, что ключевым атрибутам этого шаблона, включая
- Условию поиска, необходим доступ к непосредственному правому соседу элемента
- Используйте правого соседа элемента, чтобы определить, выполнено ли условие, и решить, * go слева или справа
- Размер Поиска Гарантий по крайней мере 2 на каждом шаге
I не понимал, как код «непосредственно обращается к элементу доступа к элементу права доступа» или использует его, чтобы «определить, выполнено ли условие и решить, * go влево или вправо".
Как это работает?