题目描述
给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。
例如,给定数组 nums = [-1,2,1,-4], 和 target = 1.
与 target 最接近的三个数的和为 2. (-1 + 2 + 1 = 2).
代码
public class Solution {
public int ThreeSumClosest(int[] nums, int target) {
nums = nums.OrderBy(a => a).ToArray();
int result = nums[0]+nums[1]+nums[2];
for(int i=0; i<nums.Length-2; i++)
{
int left = i + 1;
int right = nums.Length - 1;
while(left < right)
{
int temp = nums[i] + nums[left] + nums[right];
if(Math.Abs(temp - target) < Math.Abs(result - target))
{
result = temp;
}
if(temp < target)
left++;
else if(temp > target)
right--;
else
return result;
}
}
return result;
}
}