基本款(在現有 array 中找出某個值)

<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 指針開始往左就是不要的

Screenshot 2023-11-21 at 12.00.40 AM.png

因為可能全都要或全不要,所以初始化指針可以從 -1len(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