题解 | #二分查找-I#
二分查找-I
https://www.nowcoder.com/practice/d3df40bd23594118b57554129cadf47b
from re import search # # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # # # @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: #特殊情况2: #high的值和low都指向同一个元素 if high==low and nums[high]!= target: return -1 #else: # return nums[high] #特殊情况1 #当元素表中存在俩个元素,要判断tartget与low相等不相等或者 #target与high相等不相等 #如果都不相等,返回-1 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]: return mid mid = (high +low)//2