题目描述
解题
同上一题,改变判断标准即可。
public int ThreeSumClosest(int[] nums, int target) {
int result = nums[0] + nums[1] + nums[2];
int distance = Math.Abs(target - result);
Array.Sort(nums);
for (int i = 0; i < nums.Length - 2 ; i++)
{
if (i > 0 && nums[i] == nums[i - 1]) continue;
int L = i + 1;
int R = nums.Length - 1;
int sum = nums[i] + nums[L] + nums[R];
while (L < R)
{
sum = nums[i] + nums[L] + nums[R];
if (sum == target) return sum;
else
{
if (Math.Abs(target - sum) < distance)
{
result = sum;
distance = Math.Abs(target - sum);
}
else if (sum < target)
{
L++;
}else R--;
}
}
}
return result;
}