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. You may assume that each input would have exactly one solution.给定一个整数数组,咱们须要找出数组中三个元素的加和,使这个加和最接近于输入的target数值。返回这个最接近的加和。题目假设一道题只有一个答案。算法
For example,输入数组S = {-1 2 1 -4},目标和target = 1.
最接近target的加和是 2. (-1 + 2 + 1 = 2).数组
public int threeSumClosest(int[] nums, int target) { int min = Integer.MAX_VALUE; Arrays.sort(nums); for(int i=0;i<nums.length-2;i++){ int temp = target - nums[i]; int low = i+1; int high = nums.length-1; while(low < high){ int diff = nums[low]+nums[high]-temp; if(diff == 0) return target; if(Math.abs(min) > Math.abs(diff)){ min = diff; } if(diff > 0)high--; else low++; } } return target+min; }