class Solution {
public:
int threeSumClosest(vector<int>& nums, int target) {
sort(nums.begin(),nums.end());
int minOffset = INT_MAX;
int ans = 0;
for(int i = 0; i < nums.size() - 2; i++) {
int l = i + 1;
int h = nums.size() - 1;
while(l < h) {
int value = nums[i] + nums[l] + nums[h];
if(value == target) {
return value;
}
if(abs(value - target) < minOffset) {
minOffset = abs(value - target);
ans = value;
}
if(value > target) {
h--;
} else {
l++;
}
}
}
return ans;
}
};