
int threeSumClosest(vector<int>& nums, int target) {
int size = nums.size();
int mindif = INT_MAX;
int minsum;
sort(nums.begin(), nums.end());
for (int i = 0; i < size - 2; ++i) {
int j = i + 1, k = size - 1;
while (j < k) {
int sum = nums[i] + nums[j] + nums[k];
int dif = abs(target - sum);
if (dif < mindif) {
mindif = dif;
minsum = sum;
}
if (mindif == 0)
return minsum;
if (sum < target) ++j;
else --k;
}
while (i < size - 2 && nums[i] == nums[i + 1]) ++i;
}
return minsum;
}
本文介绍了一个寻找数组中三个数之和最接近给定目标值的高效算法。通过先排序再使用双指针技巧,遍历数组找到与目标值差值最小的三数之和。此算法时间复杂度为O(n^2),适用于解决LeetCode上的经典问题。
1274

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



