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))
posted @ 2019-04-10 21:57  NeoZy  阅读(183)  评论(0编辑  收藏  举报