Python 带反向外环的3SUM

Python 带反向外环的3SUM,python,algorithm,Python,Algorithm,有一个已知的问题叫做 这里有一个稍加修改的问题:给定一个由n个整数组成的数组S,在S中找到三个整数,使总和最接近给定的数字target。 我正试图在两个不同的网站上为它编写代码,但都存在代码挑战问题。若我从0开始编写外部循环并转发(就像在wiki中一样),我会在这两个站点上得到可接受的结果。但如果我按照下面的方式编写代码(外循环和“j”和“k”的设置不同),而不是在其中一个上,我在一些测试用例中得到了错误的答案(我不知道)。 如果我的代码有问题,你能告诉我吗?若代码真的有错误,那个么得到导致错误

有一个已知的问题叫做

这里有一个稍加修改的问题:给定一个由n个整数组成的数组S,在S中找到三个整数,使总和最接近给定的数字target。

我正试图在两个不同的网站上为它编写代码,但都存在代码挑战问题。若我从0开始编写外部循环并转发(就像在wiki中一样),我会在这两个站点上得到可接受的结果。但如果我按照下面的方式编写代码(外循环和“j”和“k”的设置不同),而不是在其中一个上,我在一些测试用例中得到了错误的答案(我不知道)。 如果我的代码有问题,你能告诉我吗?若代码真的有错误,那个么得到导致错误答案的输入就太棒了

def(self,A,B):
A.排序()
最接近=100000000
如果len(A)<3:
返回最近的
对于x范围内的i(len(A)-1,1,-1):
j=0
k=i-1
而jB:
如果最近值为无或abs(B-S)
您的代码没有问题,我认为代码失败的测试用例存在两个正确答案。考虑下面的例子:

A={1,2,3,6,10}
B=16

在这种情况下,如果使用当前设置运行代码(外部循环从末尾开始),则代码将输出
17
,即
10+6+1
;但是,使用“wiki”设置(外部循环从开始开始),输出将是
15
,即
10+2+3
。在这两种情况下,答案和
B
之间的差异为1,但数字不同


这很容易检查:在您的代码中,将
abs(B-S)
的两个条件更改为
abs(B-S)您是否尝试通过两个版本的算法输入不同的(随机)数字,并查看它们的不同之处?是的,您完全正确,正如你所说,我改变了两个条件,它通过了所有测试用例。非常感谢!:)