您的位置:首页 > 其它

leetcode-16 3Sum closest

2015-04-22 17:30 302 查看
与3Sum类似。

class Solution {
public:
void twoSum( vector<int> &num, int dex, int target, int& resdu, int& res)
{
int i=dex+1;
int j=num.size()-1;
while( i < j )
{
int thisResdu = num[dex]+num[i]+num[j] - target;//差
//与3Sum的不同之处
if( abs(thisResdu) < resdu)
{
resdu = abs(thisResdu);
res = num[dex]+num[i]+num[j];
}
if(thisResdu > 0)
--j;
else
++i;
}
}

int threeSumClosest(vector<int> &num, int target) {
int resdu=INT_MAX;
int res=0;
sort(num.begin(), num.end());//排序
for( int i=0; i != num.size(); ++i)
{
if( i > 0 && num[i] == num[i-1])
continue;
twoSum( num, i, target, resdu, res);
}
return res;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: