您的位置:首页 > 其它

leetcode ----16. 3Sum Closest

2016-09-19 15:01 393 查看
int threeSumClosest(vector<int>& nums, int target)
{
sort(nums.begin(),nums.end());
int close = nums[0]+nums[1]+nums[2];//初始化close为最小前三项的和
for(int i=nums.size()-1;i>=2;i--)//从最后一个元素开始遍历
{
int start = 0;
int end = i-1;
while(start<end)//终止条件
{
int sum = nums[start]+nums[end]+nums[i];//临时和
if(abs(sum-target)<abs(close-target))//如果差的绝对值比close小,把sum赋值给sum
close = sum;
else if(sum<target)//如果小于target,索引start++
start++;
else if(sum>target)//如果大于target,索引end--
end--;
else // 由于只存在一个解,相等的话直接返回结果
return close;
}
}
return close;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  vector math