解题思路
这个题于15题类似,15题是要找到三个数相加等于0,这个题是要找到最接近目标
三的个数之和
首先要对数组进行排序,然后采用三个指针的形式对数组进行查找,通过两层for循环,一层for循环,将三个指针变为2个指针。最后可以比较两个指针所指向位置的元素和于目标的和进行比较即可
AC代码
class Solution {
public int threeSumClosest(int[] nums, int target) {
int sum = nums[0] + nums[1] + nums[nums.length - 1];
Arrays.sort(nums);
int min = sum - target;
for(int left = 0; left < nums.length; left++) {
int right = nums.length - 1;
int medium = left + 1;
while(medium < right) {
sum = nums[left] + nums[right] + nums[medium];
if(Math.abs(sum - target) < Math.abs(min))
min = sum - target;
if(sum == target)
return sum;
else if(sum < target)
medium ++;
else
right --;
}
}
//System.out.println(min);
return min + target;
}
}