思路2:数列满足递增,设两个头尾两个指针i和j,
若ai + aj == sum,就是答案(相差越远乘积越小)
若ai + aj > sum,aj肯定不是答案之一(前面已得出 i 前面的数已是不可能),j -= 1
若ai + aj < sum,ai肯定不是答案之一(前面已得出 j 后面的数已是不可能),i += 1
# -*- coding:utf-8 -*-
class Solution:
def FindNumbersWithSum(self, array, tsum):
# write code here
i=0
j=len(array)-1
res=[]
while i<j:
if array[i]+array[j]==tsum:
res.append(array[i])
res.append(array[j])
return res
if array[i]+array[j]>tsum:
j-=1
if array[i]+array[j]<tsum:
i+=1
return res
思路1:比较垃圾,就是一些逻辑(通用)
# -*- coding:utf-8 -*-
class Solution:
def FindNumbersWithSum(self, array, tsum):
# write code here
res=[]
d={}
for i in range(len(array)):
if tsum-array[i] in array:
if tsum-array[i]<array[i]:
tmp=[tsum-array[i],array[i],tsum-array[i]*array[i]]
else:
tmp=[array[i],tsum-array[i],tsum-array[i]*array[i]]
res.append(tmp)
if not res:
return []
for i in range(len(res)):
mini=res[i]
if res[i][2]<mini[2]:
mini=res[i]
return [mini[0],mini[1]]