题解 | #二分查找-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: # write code here if not nums: return -1 low = 0 high = len(nums) - 1 mid = (high + low) // 2 while True: if high == low and nums[high] != target: return -1 # else: # return nums[high] elif mid == high or mid == low: if nums[low] == target: return low elif nums[high] == target: return high else: return -1 if target < nums[mid]: high = mid elif target > nums[mid]: low = mid elif target == nums[mid]: #在找到mid后需要,找最左边的等于Mid的值的并mid!=0 while nums[mid-1]==nums[mid] and mid!=0: mid-=1 return mid #return mid mid = (high + low) // 2