题目链接:点击打开链接
类型:数学处理
解法:先排序,再比较。
public class Solution {
public int threeSumClosest(int[] nums, int target) {
if (nums == null || nums.length < 3)
return 0;
Arrays.sort(nums);
int len = nums.length;
int curr = 0;
int result = 0;
int minValue = Integer.MAX_VALUE;
for (int i = 0 ; i < len-2 ; ++i)
{
int j = i + 1;
int k = len - 1;
while (j < k)
{
curr = nums[i] + nums[j] + nums[k];
if (Math.abs(curr - target) < minValue)
{
minValue = Math.abs(curr - target);
result = curr;
}
if (curr == target)
{
return result;
}
else if (curr < target)
{
j++;
}
else
{
k--;
}
}
}
return result;
}
}