解题思路
二分查找模板题,没什么好细讲的。这题的目的是从列表中找元素,所以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)