deff1(arr,k):
l,r =0,len(arr)-1while l<r:
m = l+(r-l)//2if arr[m]== k:return m
elif arr[m]>k:
r = m-1else:
l = m+1return-1
2. 查找旋转数组中是否存在某个数字。
deff2(arr,k):
l,r =0,len(arr)-1while l<=r:
m = l+(r-l)//2if arr[m]== k:return m
if arr[l]<=arr[m]:if arr[l]<=k<arr[m]:
r = m-1else:
l = m+1else:if arr[m]<k<=arr[r]:
l = m+1else:
r = m-1return-1
3.在 包含重复元素的旋转数组中 查找某个元素
deff3(arr,k):
l,r =0,len(arr)-1while l<=r:
m = l+(r-l)//2if arr[m]== k:return m
if arr[l]<arr[m]:if arr[l]<=k<arr[m]:
r = m-1else:
l = m+1elif arr[l]>arr[m]:if arr[m]<k<=arr[r]:
l = m+1else:
r = m-1else:
l +=1return-1
1.有一个整数数组,升序排列,数字出现的次数唯一。查找某个数字是否存在于该数组def f1(arr,k): l,r = 0,len(arr)-1 while l<r: m = l+(r-l)//2 if arr[m] == k: return m elif arr[m]>k: r = m-1 else: l = m+1 return -