首页 > 其他 > 详细

3Sum Closest

时间:2016-07-04 11:23:32      阅读:141      评论:0      收藏:0      [点我收藏+]

Given an array S of n integers, find three integers in S such that the sum is closest to a given number, target. Return the sum of the three integers.

 Notice

You may assume that each input would have exactly one solution.

Example

For example, given array S = [-1 2 1 -4], and target = 1. The sum that is closest to the target is 2(-1 + 2 + 1 = 2).

 1 public class Solution {
 2     /**
 3      * @param numbers: Give an array numbers of n integer
 4      * @param target : An integer
 5      * @return : return the sum of the three integers, the sum closest target.
 6      */
 7     public int threeSumClosest(int[] num ,int target) {
 8         int tempClosestSum = Integer.MAX_VALUE;
 9         int diff = Integer.MAX_VALUE;
10         if(num == null || num.length < 3) {
11             return tempClosestSum;
12         }
13         Arrays.sort(num);
14         for (int i = 0; i < num.length - 2; i++) {
15             if (i != 0 && num[i] == num[i - 1]) {
16                 continue; // to skip duplicate numbers; e.g [0,0,0,0]
17             }
18 
19             int left = i + 1;
20             int right = num.length - 1;
21             while (left < right) {
22                 int sum = num[left] + num[right] + num[i];
23                 if (sum - target == 0) {
24                     return target;
25                 } else if (sum - target < 0) {
26                     if (Math.abs(sum - target) < Math.abs(tempClosestSum - target)) {
27                         tempClosestSum = sum;
28                     }
29                     left++;
30                 } else {
31                     if (Math.abs(sum - target) < Math.abs(tempClosestSum - target)) {
32                         tempClosestSum = sum;
33                     } 
34                     right--;
35                 }
36             }
37         }
38         return tempClosestSum;
39     }
40 }

转载请注明出处: cnblogs.com/beiyeqingteng/

3Sum Closest

原文:http://www.cnblogs.com/beiyeqingteng/p/5639698.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!