给出一个数组,在数组中找到两个数,使得它们的和最接近目标值但不超过目标值,返回它们的和
/* 给出一个数组,在数组中找到两个数,使得它们的和最接近目标值但不超过目标值,返回它们的和 描述 给出一个数组,在数组中找到两个数,使得它们的和最接近目标值但不超过目标值,返回它们的和 如果没有满足要求的结果就返回 -1. Input:target = 15 array = [1,3,5,11,7] Output:14 */#include<iostream>#include<vector>#include<algorithm>usingnamespacestd;classSolution{public:intclosestSumUnderTarget(vector<int>&nums,inttarget){if(nums.size()<2)return-1;sort(nums.begin(),nums.end());intleft=0,right=nums.size()-1;intref=-1;while(left<right){intsum=nums[left]+nums[right];if(sum==target)returntarget;if(sum<target){if(sum>ref){ref=sum;}left++;}else{right--;}}returnref;}};intmain(){Solution s;vector<int>nums={1,3,5,11,7};inttarget=15;cout<<s.closestSumUnderTarget(nums,target)<<endl;return0;}// g++ -std=c++11 closest_sum.cpp -o closest_sum// ./closest_sum