NlogN复杂度寻找数组中两个数字和等于给定值
算法导论:22页2.3-7
描述一个运行时间为O(nlogn)的算法,找出n个元素的S数组中是否存在两个元素相加等于给定x值
AC解:
a=[1,3,6,7,9,15,29]
def find2sumx(nums,x):
nums.sort()
le,ri=0,len(nums)-1
while le>=0 and ri<=len(nums) and le<ri:
if nums[le]+nums[ri]<x:
le+=1
elif nums[le]+nums[ri]>x:
ri-=1
else:
return( (le,ri),(nums[le],nums[ri]))
return (-1)
print(find2sumx(a,15))
进击的小🐴农