您的位置:首页 > 其它

3Sum Closest

2016-05-09 23:26 274 查看
class Solution {
public:
int threeSumClosest(vector<int>& nums, int target) {
int i,left,right;
int n=nums.size();
int sum,difference;
difference=0x7ffffff;
sort(nums.begin(),nums.end());
for(int i=0;i<n-2;i++)
{
left=i+1;
right=n-1;
int temptarget=target-nums[i];
while(left<right)
{
if(nums[left]+nums[right]==temptarget)
return target;
else if(nums[left]+nums[right]<temptarget)
{
int cdifference=abs(nums[left]+nums[right]-temptarget);
if(cdifference<difference)
{
difference=cdifference;
sum=nums[i]+nums[left]+nums[right];
}
while(left<right&&nums[left+1]==nums[left])
left++;
left++;
}else
{
int cdifference=abs(nums[left]+nums[right]-temptarget);
if(cdifference<difference)
{
difference=cdifference;
sum=nums[i]+nums[left]+nums[right];
}
while(left<right&&nums[right-1]==nums[right])
right--;
right--;
}
}
while(i<n&&nums[i+1]==nums[i])i++;

}
return sum;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: