给出一个数组,在数组中找到两个数,使得它们的和最接近目标值但不超过目标值,返回它们的和
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
class Solution {
public:
int closestSumUnderTarget(vector<int>& nums, int target) {
if(nums.size() < 2) return -1;
sort(nums.begin(), nums.end());
int left = 0, right = nums.size() - 1;
int ref = -1;
while(left < right){
int sum = nums[left] + nums[right];
if(sum == target)
return target;
if(sum < target){
if(sum>ref){
ref = sum;
}
left++;
}else{
right--;
}
}
return ref;
}
};
int main() {
Solution s;
vector<int> nums = {1,3,5,11,7};
int target = 15;
cout << s.closestSumUnderTarget(nums, target) << endl;
return 0;
}