一、题目概述
二、思路方向
为了解决这个问题,我们可以使用双指针法结合排序。首先,对数组
nums
进行排序,然后使用三层嵌套循环来遍历所有可能的三元组(三个数的组合)。但是,这种方法的时间复杂度会非常高,为 O(n^3),对于大数据集来说是不可接受的。由于数组已排序,我们可以优化这个过程,使用双指针法来减少时间复杂度。思路是,固定一个数(外层循环),然后使用两个指针(一个在前,一个在后)在剩下的数中移动,以找到和最接近
target
的三个数。
三、代码实现
import java.util.Arrays;
public class Solution {
public int threeSumClosest(int[] nums, int target) {
Arrays.sort(nums); // 首先对数组进行排序
int closestSum = nums[0] + nums[1] + nums[2]; // 初始化最接近的和为数组中的前三个数的和
int n = nums.length;
for (int i = 0; i < n - 2; i++) {