最も近いLeetcodeターとの数

タイトル説明

n個の整数と目標NUMSターゲットを含むアレイを考えます。NUMSは三つの整数を特定し、そのような彼らの最も近いことをターゲットにしています。3つの数字とリターン。各グループは唯一の答えのみ入力があることを前提としています。

思考

  1. そして、同様の3とアイデアの数が、プラスの誤差は、最小エラーリターンが決定されます

コード

この方法の一つ:

class Solution {
public:
    int threeSumClosest(vector<int>& nums, int target) {
        if(nums.size()==0)
            return 0;
        if(nums.size()==1)
            return nums[0];
        sort(nums.begin(),nums.end());
        int res = INT_MAX;
        for(int i = 0; i < nums.size()-2;i++)
        {
            int error = TwoSumClosest(nums,i,target);
            if (abs(error)<abs(res))
			    res = error;
        }
        return target+res;
    }
    int TwoSumClosest(vector<int>& nums,int i, int target)
    {
        target = target - nums[i];
        int left = i + 1, right = nums.size()-1;
        int error = INT_MAX;
        while(left<right)
        {
            int sum = nums[left] + nums [right];
            if (abs(sum - target)<abs(error))
                error = sum - target;
            if(sum < target)
                left++;
            else if(sum > target)
                right--;
            else
                return 0;
        }
        return error;
    }
};
公開された85元の記事 ウォンの賞賛0 ビュー370

おすすめ

転載: blog.csdn.net/weixin_38312163/article/details/105078396