题目描述
输出描述:
对应每个测试案例,输出两个数,小的先输出。
解题思路:
既然是排好序的,那就可以首尾齐发了(跟快排思路比较像)——
从头开始一个指针left,尾部一个指针right,
如果list[left]+list[right]>sum, 那right-1(值太大了,需要减小一点)
如果list[left]+list[right]<sum,那left+1(值太小了,需要变大一点)
如果list[left]+list[right]=sum,找到一组,保存下来,同时移动左右指针,开始下一次寻找。
代码:
# -*- coding:utf-8 -*-
class Solution:
def FindNumbersWithSum(self, array, tsum):
# write code here
res_num=[]
res_mul=[]
left, right = 0, len(array)-1
while left < right:
num1, num2 = array[left], array[right]
if num1+num2>tsum:
right = right - 1
elif num1+num2<tsum:
left = left + 1
else:
res_num.append([num1, num2])
res_mul.append(num1*num2)
left = left +1
right = right -1
if res_mul:
index = res_mul.index(min(res_mul))
return res_num[index]
else:
return res_num
【ps】当时在男票的启发下做出来的,都过去两个月了,还是记忆犹新,MuMa~