可能重复:
Finding three elements in an array whose sum is closest to an given number
给出一个整数数组,A1,A2,...,An,包括负数和正数,以及另一个整数S.现在我们需要在数组中找到三个不同的整数,其总和最接近给定的整数S.如果存在多个解决方案,则其中任何一个都可以。是否有算法在O(n ^ 2)时间内找到三个整数?
答案 0 :(得分:4)
是的。你想找到a,b,c,其中+ b + c尽可能接近s。
按递增顺序排列数字。
尝试每个a值。对于每个a值,请执行以下步骤:
以b =最小(第一)数字开头,c =最大(最后)数字。如果这使得+ b + c更接近s,则逐步减少c。
然后逐步增加b,每次增加b时,如果使+ b + c更接近s,则逐步减少c。