1. 二分查找
def search( nums, target):
if len(nums) == 0:
return -1
def help(left,right):
if left<=right:
m=int((left+right)/2)
while target<nums[m]:
return help(left,m-1)
while target==nums[m]:
return m
while target>nums[m]:
return help(m+1,right)
else:
return -1
return help(0,len(nums)-1)
print(search( nums = [-1,0,3,5,9,13], target = 11))
2. 在排序数组中查找元素的第一个和最后一个位置
def searchRange(nums, target) :
i = 0
res = [-1,-1]
if len(nums) == 0:
'''第一种情况'''
return [-1, -1]
if nums[len(nums)-1]<target:
'''第二种情况'''
return [-1,-1]
while nums[i]<=target:
if nums[i]==target:
res.append(i)
break
i+=1
j=len(nums)-1
while nums[j]>=target and res!=[-1,-1]:
if nums[j]==target:
res.append(j)
break
j -= 1
return res
print(searchRange(nums = [5,7,7,8,8,10], target = 6))