其他分享
首页 > 其他分享> > 剑指offer-42 和为S的两个数字

剑指offer-42 和为S的两个数字

作者:互联网

class Solution:#左右指针的方法  递增数组
    def FindNumbersWithSum(self, array, tsum):
        # write code here
        if not array: return []
        lp = 0
        rp = len(array) - 1
        res = [array[-1]] * 2#最大的了
        while lp < rp:
            tmp = array[lp] + array[rp]
            if tmp > tsum:
                rp -= 1
            elif tmp < tsum:
                lp += 1
            else:
                if array[lp] * array[rp] < res[0] * res[1]:
                    res[0], res[1] = array[lp], array[rp]
                lp += 1
                rp -= 1

        return res if res[0] + res[1] == tsum else [] #这里的判断还是必要的

print(Solution().FindNumbersWithSum([1,2,3,4], 5))

标签:tmp,tsum,rp,数字,offer,res,42,lp,array
来源: https://blog.csdn.net/qq_35912099/article/details/100165964