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