欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

和为S的两个数字(python)

程序员文章站 2024-03-15 21:26:06
...

和为S的两个数字

题目

和为S的两个数字

解法

解法1 双指针

# -*- coding:utf-8 -*-
class Solution:
    def FindNumbersWithSum(self, array, tsum):
        """
        从左右一起查找
        因为当两个数的和一定的时候, 两个数字的间隔越大, 乘积越小
        所以直接输出查找到的第一对数即可
        :param array: 递增排序的数组
        :param tsum: 目标值
        """
        # write code here
        if not array or not tsum:
            return []
        head = 0
        tail = len(array)-1

        while head < tail:
            cur_sum = array[head]+array[tail]
            if tsum == cur_sum:
                return [array[head],array[tail]]
            elif cur_sum <tsum:
                head = head + 1
            else:
                tail = tail -1
        return []

if __name__ == '__main__':
    test = [1, 2, 4, 7, 11, 15]
    s = Solution()
    print(s.FindNumbersWithSum(test, 15))