题目
描述
请实现有重复数字的升序数组的二分查找
给定一个 元素有序的(升序)长度为n的整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的第一个出现的target,如果目标值存在返回下标,否则返回 -1
数据范围:0≤n≤100000
进阶:时间复杂度O(logn) ,空间复杂度O(n)
思路
二分
代码
python版本:
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 如果目标值存在返回下标,否则返回 -1
# @param nums int整型一维数组
# @param target int整型
# @return int整型
#
class Solution:
def search(self , nums: List[int], target: int) -> int:
# write code here
if(len(nums)==0):
return -1
left = 0
right = len(nums)-1
while(right>left):
mid = left+(right-left)//2
if(nums[mid]<target):
left = mid+1
else:
right = mid
res = right if nums[left]==target else -1
return res
# if target not in nums:
# res = -1
# else:
# res = nums.index(target)
# return res
c++版本:
无