- 1 int closestTargetValue(int target, vector<int> &array) {
- 2 int size = array.size();
- 3 if (size < 2) {
- 4 return -1;
- 5 }
- 6
- 7 sort(array.begin(), array.end());
- 8 int left = 0, right = size - 1, diff = INT_MAX;
- 9 while (left < right) {
- 10 int sum = array[left] + array[right];
- 11 if (sum > target) {
- 12 right--;
- 13 } else {
- 14 diff = min(diff, target - sum);
- 15 left++;
- 16 }
- 17 }
- 18 return diff == INT_MAX ? -1 : target - diff;
- 19 }