你得到一个整数数组,A1,A2,...,An

时间:2011-09-17 11:54:58

标签: algorithm complexity-theory

  

可能重复:
  Finding three elements in an array whose sum is closest to an given number

给出一个整数数组,A1,A2,...,An,包括负数和正数,以及另一个整数S.现在我们需要在数组中找到三个不同的整数,其总和最接近给定的整数S.如果存在多个解决方案,则其中任何一个都可以。是否有算法在O(n ^ 2)时间内找到三个整数?

1 个答案:

答案 0 :(得分:4)

是的。你想找到a,b,c,其中+ b + c尽可能接近s。

  1. 按递增顺序排列数字。

  2. 尝试每个a值。对于每个a值,请执行以下步骤:

  3. 以b =最小(第一)数字开头,c =最大(最后)数字。如果这使得+ b + c更接近s,则逐步减少c。

  4. 然后逐步增加b,每次增加b时,如果使+ b + c更接近s,则逐步减少c。

相关问题