解题思路:
- 还是二分查找
- 如果有重复的目标元素,只可能在找到的这个mid的左边,因此往左边去找就行了,唯一需要注意的就是不要超过了边界条件
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 如果目标值存在返回下标,否则返回 -1
# @param nums int整型一维数组
# @param target int整型
# @return int整型
#
class Solution:
def search(self , nums: List[int], target: int) -> int:
# write code here
if nums == []:
return -1
des = 0
left = 0
right = len(nums)
while left <= right:
mid = (left + right) // 2
if target == nums[mid]:
des = mid
while des-1 >= 0 and nums[des-1] == target:
des -= 1
return des
if target > nums[mid]:
left = mid + 1
if target < nums[mid]:
right = mid - 1
return -1