704. 二分查找

题目链接

方法 :二分

思路

  1. 双闭区间时,leftright 修改过后,说明之前的区间之外没有答案;同样地,说明当前区间内可能存在答案。因此,即使 leftright 指向同一个位置,这个位置也是没有验证过的,需要进行验证。

image.png

image.png

代码

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
class Solution:
    def search(self, nums: List[int], target: int) -> int:
        left = 0
        right = len(nums) - 1

        while left <= right:
            mid = left + (right - left) // 2
            if nums[mid] == target:
                return mid
            elif nums[mid] > target:
                right = mid - 1
            else:
                left = mid + 1
        return -1

复杂度

  • 时间复杂度:$O(\log n)$
  • 空间复杂度:$O(1)$
Licensed under CC BY-NC-SA 4.0
最后更新于 Sep 19, 2024 19:24 +0800
使用 Hugo 构建
主题 StackJimmy 设计