本文最后更新于:2022年6月25日 晚上
题目
给你一个长度为 n 的整数数组 nums 和 一个目标值 target。请你从 nums 中选出三个整数,使它们的和与 target 最接近。
返回这三个数的和。
假定每组输入只存在恰好一个解。
输入:nums = [-1,2,1,-4], target = 1
输出:2
解释:与 target 最接近的和是 2 (-1 + 2 + 1 = 2) 。
思路
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
| class Solution { public: int threeSumClosest(vector<int>& nums, int target) { sort(nums.begin(), nums.end());
int res = 0; int minv = INT_MAX;
for (int a = 0; a < nums.size(); a ++) { int sum = target - nums[a];
int left = a+1, right = nums.size() - 1;
while (left < right) { if (abs(nums[left] + nums[right] - sum) < minv) { minv = abs(nums[left] + nums[right] - sum); res = nums[a] + nums[left] + nums[right]; }
if (nums[left] + nums[right] == sum) return target; else if (nums[left] + nums[right] < sum) left++; else if (nums[left] + nums[right] > sum) right--; } } return res; } };
|
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/3sum-closest
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。