给定一个包括 n 个整数的数组 nums
和 一个目标值 target
。找出 nums
中的三个整数,使得它们的和与 target
最接近。返回这三个数的和。假定每组输入只存在唯一答案。
输入: nums = [-1,2,1,-4], target = 1 输出: 2 解释: 与 target 最接近的和是 2 (-1 + 2 + 1 = 2) 。
3 <= nums.length <= 10^3
-10^3 <= nums[i] <= 10^3
-10^4 <= target <= 10^4
impl Solution {
pub fn three_sum_closest(mut nums: Vec<i32>, target: i32) -> i32 {
let mut diff = std::i32::MAX;
nums.sort_unstable();
for i in 0..nums.len() - 2 {
let mut j = i + 1;
let mut k = nums.len() - 1;
while j < k {
let sum = nums[i] + nums[j] + nums[k];
if (target - sum).abs() < diff.abs() {
diff = target - sum;
}
if sum < target {
j += 1;
} else {
k -= 1;
}
}
}
target - diff
}
}