classSolution{public:intthreeSumClosest(vector<int>& nums,int target){int n = nums.size();long ans = INT_MAX;sort(nums.begin(), nums.end());//使用双向指针需要对数组排序for(int first =0; first < n; first++){int second = first +1, third = n -1;//转为两数之和问题 双向指针遍历while(second < third){//保留abs(sum-target)的最小值long sum = nums[first]+ nums[second]+ nums[third];
ans =abs(sum - target)<abs(ans-target)? sum : ans;//正常的双向指针步骤if(sum > target)
third--;elseif(sum < target)
second++;elsereturn target;}}return ans;}};