leetcode16

LeetCode16----------3Sum Closest

意思是求三数相加最接近target的一个结果,也就是加起来与target相减绝对值最小的。这次是要求返回三数之和,而不是这个三个数组成的三元组。

最开始想到的就是套用上一题的思路。

不过试了试三重循环直接就过了,也就算了,后来网上查了一下,有用15题相似代码解决的。

代码:

class Solution {
public:
    int threeSumClosest(vector<int>& nums, int target) {
        int numLen = nums.size();
        int i;
		int j;
		int k;
		int closest;
		int result;
		int minAbs=INT_MAX;
		cout << endl;
		for(i=0;i<numLen-2;i++)
		{
			for(j=i+1;j<numLen-1;j++)
			{
				for(k=j+1;k<numLen;k++)
				{
					closest = nums[i]+nums[j]+nums[k];
					if(closest == target )
						return closest;
					else if(closest > target)
					{
						if(closest - target < minAbs)
						{
							minAbs=closest - target;
							result = closest;
						}
					}
					else
					{
						if(target - closest < minAbs)
						{
							minAbs=target - closest;
							result = closest;
						}
					}
				}
			}
		}
		return result;
    }
};


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值