Description:
Given an array nums of n integers and an integer target, find three integers in nums such that the sum is closest to target. Return the sum of the three integers. You may assume that each input would have exactly one solution.
Example:
Given array nums = [-1, 2, 1, -4], and target = 1.
The sum that is closest to the target is 2. (-1 + 2 + 1 = 2).
class Solution {
public int threeSumClosest(int[] nums, int target) {
int i, sum = 0, valueclosest = 0, d = Integer.MAX_VALUE;
int base, l, r;
//d是distane,表示sum和target之间的距离
//如果数组长度小于等于3,直接返回加和结果
if (nums.length <= 3) {
for (i = 0; i < nums.length; i++)
sum += nums[i];
return sum;
}
Arrays.sort(nums);
for (base = 0; base < nums.length - 2; base++) {
if (base > 0) //避免访问nums[-1]
if (nums[base] == nums[base - 1])
continue;
l = base + 1;
r = nums.length - 1;
while (l < r) {
sum = nums[base] + nums[l] + nums[r];
// 更新最小距离
if (Math.abs(sum - target) < d) {
d = Math.abs(sum - target);
valueclosest = sum;
}
if (sum == target)
return valueclosest;
else if (sum < target)
l++;
else
r--;
}
}
return valueclosest;
}
}
运行结果:

本文介绍了一种算法解决方案,用于寻找数组中三个整数的组合,使其和最接近给定的目标值。通过排序和双指针技巧,有效地解决了这个问题,并提供了完整的Java代码实现。
1869

被折叠的 条评论
为什么被折叠?



