老汉技术专栏

Java开发程序猿一枚~欢迎各位批评指正

LintCode 59. 最接近的三数之和

给一个包含 n 个整数的数组 S, 找到和与给定整数 target 最接近的三元组,返回这三个数的和。

public class Solution {
   /**
    * @param numbers: Give an array numbers of n integer
    * @param target: An integer
    * @return: return the sum of the three integers, the sum closest target.
    */
   public int threeSumClosest(int[] numbers, int target) {
      // write your code here
      Arrays.sort(numbers);
      int result = Integer.MAX_VALUE;
      for (int i = 0; i < numbers.length; i++) {
         int j = i + 1, k = numbers.length - 1;
         while (j < k) {
            int tmpTotal = numbers[i] + numbers[j] + numbers[k];
            if (Math.abs(tmpTotal - target) < Math.abs(result - target)) {
               result = tmpTotal;
            }
            if (tmpTotal <= target) {
               j++;
            } else {
               k--;
            }
         }
      }
      return result;
   }
}

阅读更多
文章标签: java lintcode
个人分类: java开发
上一篇LintCode 57. 三数之和
下一篇LintCode 61. 搜索区间
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭