回溯,当求得三数之和后,更新与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];
}
}
};
本文介绍了一种使用回溯算法解决三数之和最接近目标值的问题的方法。通过递归地寻找数组中三个数的组合,使得这三个数的和最接近给定的目标值。该算法维护了一个变量来跟踪当前找到的最接近目标值的和。
1128

被折叠的 条评论
为什么被折叠?



