package com.interview.books.leetcodeoj;
import java.util.Arrays;
/**
* Created_By: stefanie
* Date: 14-12-18
* Time: 下午3:05
*/
public class LOJ16_ThreeSumClosest {
//tracking closest and return closest + target
//1. i, j, k is offset, not elements.
public int threeSumClosest(int[] num, int target) {
int closest = Integer.MAX_VALUE;
Arrays.sort(num);
for(int i = 0; i < num.length - 2; i++){
int j = i + 1;
int k = num.length - 1;
while(j < k){
int sum = num[i] + num[j] + num[k];
if(sum == target) return target;
int diff = sum - target;
if(Math.abs(diff) < Math.abs(closest)) closest = diff;
if(sum > target) k--;
else j++;
}
}
return closest + target;
}
}