Leetcode 704 Binary Search
You must write an algorithm with O(log n) runtime complexity.
-
Sol ve sağ işaretçileri atarız.: left = 0, right = n - 1.
-
left <= right olduğu sürece liste içinde dolaşmaya başlarız.
-
Listenin orta elemanını (nums[mid]) aradığımız sayı ile karşılaştırırız.
-
Eğer orta eleman aradığımız sayı ise : return orta eleman (nums[mid]) .
-
Aradığımız eleman bulunmadı ise target < nums[mid] solda aramaya devam ederiz bunun için yeni sağ -> orta-1 olur (right = pivot - 1).
-
nums[mid] < target durumunda ise sağda aramaya devam ederiz bunun için yeni sol -> orta-1 olur left = pivot + 1
def search(self, nums: List[int], target: int) -> int:
left, right = 0, len(nums) - 1
while left <= right:
mid = left + (right - left) // 2
if nums[mid] == target:
return mid
if target < nums[mid]:
right = mid - 1
else:
left = mid + 1
return -1