回溯,当求得三数之和后,更新与target差距最小的和;
class Solution {
public:
int res=INT_MAX-2;
int threeSumClosest(vector<int>& nums, int target) {
int temp=0;
find(nums,temp,target,0,0);
return res;
}
void find(vector<int>& nums,int temp,int target,int begin,int lenth)
{
if(lenth==3)
{
res=abs(res-target)<abs(temp-target)?res:temp;
return;
}
for(int i =begin;i<nums.size();i++)
{
temp+=nums[i];
find(nums,temp,target,i+1,lenth+1);
temp-=nums[i];
}
}
};