题解 | #二分查找-II#
二分查找-II
https://www.nowcoder.com/practice/4f470d1d3b734f8aaf2afb014185b395
# # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # # 如果目标值存在返回下标,否则返回 -1 # @param nums int整型一维数组 # @param target int整型 # @return int整型 # class Solution: def search(self , nums: List[int], target: int) -> int: if len(nums) == 0: return -1 low = 0 high = len(nums) - 1 # 全局一致 if nums[0] == target: return 0 while low <= high: mid = low + (high - low) // 2 if nums[mid] > target: high = mid - 1 elif nums[mid] < target: low = mid + 1 else: if mid==0 or nums[mid-1] < target: return mid else: high = mid - 1 return -1
注意点:
1、空数组
2、最后的else需要注意mid-1不要溢出,增加mid==0判断