python 和为S的两个数字
输入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。
运用到的知识;
1.判断是否是统一类型:
1 if not isinstance (array,list): 2 return l
2.将 列表 变成 有索引的序列, 同时列出数据和数据下标,一般用在 for 循环当中。
1 for i,v in enumerate(array): 2 for v1 in array[i:]: 3 if (v + v1 ) == tsum: 4 l.append([v,v1])
思路 不难 :
整个代码:
1 class Solution: 2 def FindNumbersWithSum(self, array, tsum): 3 # write code here 4 l = [] 5 if not isinstance (array,list): 6 return l 7 for i,v in enumerate(array): 8 for v1 in array[i:]: 9 if (v + v1 ) == tsum: 10 l.append([v,v1]) 11 if l: 12 return l[0] 13 else: 14 return l
在网上看到 一种 更简单的:
https://www.cnblogs.com/yml435/p/4655470.html
是用 前后索引 来 计算的。更快 应该。
这道题与 上个题类似。