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

和为s的两个数字python

程序员文章站 2024-03-15 21:34:42
...

和为s的两个数字python
思路:
因为数组是有序的,所以可以用双指针,指向数组的首尾,具体步骤如下:
1.初始化:指针low指向数组首, 指针fast指向数组尾部
2. 如果arr[low] + arr[fast] == sum , 说明是可能解
3. 否则如果arr[low] + arr[fast] > sum, 说明和太大,所以fast -= 1
4. 否则如果arr[low] + arr[fast] < sum, 说明和太小,所以low += 1

# -*- coding:utf-8 -*-
class Solution:
    def FindNumbersWithSum(self, array, tsum):
        # write code here
        lens = len(array)
        low = 0
        fast = lens - 1
        result = []
        ji = float('inf')
        while low < fast:
            if array[low] + array[fast] == tsum:
                if ji > array[low] * array[fast]:
                    ji = array[low] * array[fast]
                    result.append(array[low])
                    result.append(array[fast])
                low += 1
                fast -= 1
            elif array[low] + array[fast] < tsum:
                low += 1
            else:
                fast -= 1
        return result