<aside> 💡 從 array 中找出某個值
</aside>
def search(nums, target):
l, r = 0, len(nums) - 1
while r >= l:
m = (l + r) // 2
if nums[m] == target:
return m
elif target > nums[m]:
l = m + 1
else:
r = m - 1
# if not found
return -1
<aside> 💡 從 array 中找出從某個點開始後,一直都是要的值
</aside>
如下圖,找完後, R 指針開始往右就是要的,L 指針開始往左就是不要的
因為可能全都要或全不要,所以初始化指針可以從 -1
與 len(array)
開始
def search(nums, target):
l, r = -1, len(nums)
while l + 1 != r:
m = (l + r) // 2
if something_pass(m):
r = m
else:
l = m
return l or r
‣
左指針 -1, 右指針 len(arr)-1
while l + 1 ≠ r
m = (l + r ) / 2