剑指offer(python)-和为s的两个数字

题目描述
输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。

输出描述: 对应每个测试案例,输出两个数,小的先输出。

不需要判断最小的

# -*- coding:utf-8 -*-
class Solution:
    def FindNumbersWithSum(self, array, tsum):
        for i in array:
            if tsum-i in array:
                if tsum-i==i:
                    if array.count(i)>1:
                        return [i,i]
                else:
                    return [i,tsum-i]
        return []

下面这个是我自己写的,通过

# -*- coding:utf-8 -*-
class Solution:
    def FindNumbersWithSum(self, array, tsum):
        list=[]
        n=len(array)
        for i in range(0,n-1):
            for j in range(i+1,n):
                if array[i]+array[j]==tsum:
                    list.append([array[i],array[j]])
        if list==[]:
            return []
        return min(list)


猜你喜欢

转载自blog.csdn.net/qq_24429333/article/details/87894679