◻️16. 3Sum Closest (medium)
Input: nums = [-1,2,1,-4], target = 1
Output: 2
Explanation: The sum that is closest to the target is 2. (-1 + 2 + 1 = 2).Input: nums = [0,0,0], target = 1
Output: 0
Explanation: The sum that is closest to the target is 0. (0 + 0 + 0 = 0).Solutions
Optimised
```cpp
class Solution {
public:
int threeSumClosest(vector<int>& nums, int target) {
long long int n=nums.size();
if(n<3) return {};
ranges::sort(nums);
long long int closest=INT_MAX;
for(int i=0; i+2<nums.size(); ++i){
if(i>0 && nums[i]==nums[i-1]){continue;}
int l=i+1, r=n-1;
while(l<r){
int sum = nums[i]+nums[l]+nums[r];
if(sum==target){
return(sum);
}
else if(sum>target){
--r;
}
else{
++l;
}
if(abs(sum-target)<abs(closest-target)) closest = sum;
}
}
return closest;
}
};
```Last updated