本文共 967 字,大约阅读时间需要 3 分钟。
给定一个包括 n 个整数的数组 nums
和 一个目标值 target
。找出 nums
中的三个整数,使得它们的和与 target
最接近。返回这三个数的和。假定每组输入只存在唯一答案。
例如,给定数组 nums = [-1,2,1,-4], 和 target = 1.与 target 最接近的三个数的和为 2. (-1 + 2 + 1 = 2).
跟求三数之和差不多,甚至感觉比三数之和简单,因为有相等的情况直接返回target就可以了。。。
思路跟三数之和差不多,只是在三数之和上加了根据abs(ans-target)与abs(Sum-target)的大小判断是否更新ans值。。。
代码如下:
class Solution {public: int threeSumClosest(vector & nums, int target) { int Size=nums.size(); sort (nums.begin(),nums.end(),less ()); if(Size<3) return 0; int ans=0x3f3f3f3f; for (int i=0;itarget) { if(abs(ans-target)>Sum-target) ans=Sum; k--; } else if(Sum target-Sum) ans=Sum; j++; } else return target; } } return ans; }};
转载地址:http://ptaen.baihongyu.com/