核心代码
for () {
//确定第一个数
while () {
//双指针操作
}
}
class Solution {
public int threeSumClosest(int[] nums, int target) {
int res = nums[0] + nums[1] + nums[2]; // [0,1,2] 0
Arrays.sort(nums);// 先排序!!
for (int i = 0; i < nums.length; i++) {
int left = i + 1;
int right = nums.length - 1;
while (left < right) {
int sum = nums[i] + nums[left] + nums[right];
if (sum == target) { // 找到target 直接返回
return sum;
}
if (Math.abs(sum - target) <= Math.abs(res - target)) {//更新
res = sum;
}
// 日常移动
if(sum > target) {
right--;
} else if(sum < target) {
left++;
}
}
}
return res;
}
}