class Solution {
public int threeSumClosest(int[] nums, int target) {
Arrays.sort(nums);
if(nums.length < 3) return target;
int result = nums[0] + nums[1] + nums[2];
for(int i = 0; i < nums.length - 2; i++)
{
if(i > 0 && nums[i] == nums[i - 1]) continue;
int left = i + 1, right = nums.length - 1;
while(left < right)
{
int sum = nums[i] + nums[left] + nums[right];
result = Math.abs(target - result) - Math.abs(target - sum) > 0 ? sum : result;
if(sum > target)
{
right--;
}
else if(sum < target)
{
left++;
}
else
{
return sum;
}
}
}
return result;
}
}