【发布时间】:2016-03-05 18:33:59
【问题描述】:
有一个名为3SUM的已知问题。
这里有一个稍微改动的问题:给定一个包含 n 个整数的数组 S,在 S 中找到三个整数,使得总和最接近给定的数字 target。
我正在尝试在两个不同的站点上为它编写代码,这些站点存在代码挑战问题。如果我从 0 开始编写外循环并转发(如在 wiki 中),我会在两个站点上都得到接受的结果。但是,如果我编写如下代码(外循环和“j”和“k”设置的差异)而不是其中一个,我会在某些测试用例上得到错误的答案(我不知道)。 如果我的代码有问题,你能告诉我吗?如果代码确实有错误,那么获得导致错误答案的输入会很棒。
def threeSumClosest(self, A, B):
A.sort()
closest = 1000000000
if len(A) < 3:
return closest
for i in xrange(len(A)-1, 1, -1):
j = 0
k = i - 1
while j < k:
S = A[i] + A[j] + A[k]
if S == B:
return B
elif S > B:
if closest is None or abs(B - S) < abs(B - closest):
closest = S
k -= 1
else:
if closest is None or abs(B - S) < abs(B - closest):
closest = S
j += 1
return closest
【问题讨论】:
-
您是否尝试过通过两个版本的算法输入不同的(随机)数字并查看它们的不同之处?