✉️1. 题目描述:
给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。
🌻2. 例子:
输入: nums = [-1,0,3,5,9,12], target = 9
输出: 4
解释: 9 出现在 nums 中并且下标为 4
😏3. 解题思路(自己的一些想法):
1. 该题是考察二分搜索的基本实现,通过双指针的不断移动进行范围性的排除
2. 详细的代码步骤我在代码部分中有写出
✨4. 代码:
def search(self, nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: int
"""
start = 0
end = len(nums)-1
# 定义起点和终点
while start <= end:
# 当起点小于等于终点时
mid = (start + end)//2
# 找点中点
if(target == nums[mid]):
return mid
elif (target > nums[mid]):
start = mid+1
elif (target < nums[mid]):
end = mid-1
# 根据找到的元素大小来移动起点或者终点
return -1
# 如果跑完while都没有return说明没有,return -1