3Sum Closest 三个数的和最接近某个值
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.
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).
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).
三个数的和最接近某个目标值,求和是多少
import java.lang.reflect.Array;
import java.util.Arrays;
public class ThreeSumClosest {
public static void main(String[] args) {
// TODO Auto-generated method stub
int arr[]= {-1,1,2,-4};
Arrays.sort(arr);
System.out.println(Arrays.toString(arr));
int target=1;
int res=arr[0]+arr[1]+arr[2];
for(int i=0;i<arr.length-2;i++) {
int start=i+1;
int end=arr.length-1;
while(start<end) {
int sum=arr[i]+arr[start]+arr[end];
System.out.println(sum+"==");
if(sum>target) {
end--;
System.out.println("-");
}else {
start++;
System.out.println("+");
}
int tmp1=Math.abs(res-target);
int tmp2=Math.abs(sum-target);
if(tmp2<tmp1) {
res=sum;
}
}
}
System.out.println(res);
}
}