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(logn),其中n是数组的长度。
-
空间复杂度:O(1)。