给定一个 n
个元素有序的(升序)整型数组 nums
和一个目标值 target
,写一个函数搜索 nums
中的 target
,如果目标值存在返回下标,否则返回 -1
。
class Solution:
def search(self, nums: List[int], target: int) -> int:
# length = len(nums)
# start = 0
# end = length-1
# middle = math.floor((end - start)/2)
# while True:
# if target > nums[middle]:
# start = middle
# middle += math.floor((end - start)/2)
# if target < nums[middle]:
# end = middle
# middle = start + math.floor((end - start)/2)
# if target == nums[middle]:
# break
# return(middle)
#以上是努力了半小时最后还是没跑通的错误版本
#以下是看完视频教程后一遍跑通的正确版本
# 尝试左闭右闭 [left, right]
left = 0
right = len(nums)-1
while left <= right:
middle = int(left + right)
if (target < nums[middle]):
right = middle - 1
if (target > nums[middle]):
left = middle + 1
if (target == nums[middle]):
return middle
return -1