704. 二分查找

一、题目

给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target  ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1

二、思路

二分查找

注意考虑大小为1之类,所以开头是要可以left=right,这样就考虑了left和right,所以在mid!=target时,就可以不把mid纳入到考虑范围,也就是left=mid+1,right=mid-1

三、代码

class Solution:
    def search(self, nums: List[int], target: int) -> int:
        left, right = 0, len(nums) - 1
        while left <= right:
            mid = (right - left) // 2 + left
            num = nums[mid]
            if num == target:
                return mid
            elif num > target:
                right = mid - 1
            else:
                left = mid + 1
        return -1

四、分析

  • 时间复杂度:O(log⁡n),其中n是数组的长度。

  • 空间复杂度:O(1)。

posted @ 2023-02-20 15:03  ImreW  阅读(10)  评论(0编辑  收藏  举报