描述
给定一个数字集合 S 以及一个数字 target,需要从集合中找出3个数字的和与这个 target的值最接近(绝对值最小)
样例
Input: S = [-1, 2, 1, -4], target = 1 Output: 2
思路
首先排序,之后确定一个数字的前提下,再利用双指针从两端向中间扫描,求
min | a+b+c - target|
,其中 a,b ,c 是 集合中数字。 代码
#include#include #include #include #include #include #include using namespace std;class Solution {public: int threeSumClosest(vector & nums, int target) { sort(nums.begin(),nums.end()); int maxdiff = INT_MAX; int res = 0; int len = nums.size(); for(int i=0;i target){ end--; } else if(threeSum < target){ start++; } } } return res; }};int main(){ // vector nums{0,2,1,-3}; vector nums{-1, 2, 1, -4}; int target = 1; Solution ss; cout< <