解题思路

二分查找模板题,没什么好细讲的。这题的目的是从列表中找元素,所以while循环条件必须是left <= right需要包含right部分。

代码

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 target == nums[mid]: return mid
            if target < nums[mid]:
                right = mid - 1
            else :
                left = mid + 1
        return -1

复杂度分析

  • 时间复杂度: O(logn)
  • 空间复杂度: O(1)