Leetcode:16. 3Sum Closest

问题描述:
Given an array nums of n integers and an integer target, find three integers in nums such that the sum is closest to target. Return the sum of the three integers. You may assume that each input would have exactly one solution.

给定一个数组和一个目标和,求数组中哪三个数的和与目标数最接近。返回三个数的和O(∩_∩)O哈哈~

最简单的循环嵌套的方法:

class Solution {
public:
    int threeSumClosest(vector<int>& nums, int target) {
        int err = 10000;
        int target_sum;
        int sum;
        for (int i = 0; i < nums.size(); i++)
        {
            for(int j = i+1; j < nums.size(); j++)
            {
                for(int k = j+1; k < nums.size(); k++)
                {
                    target_sum = nums[i] + nums[j] + nums[k];
                    int target_err = abs(target_sum-target);
                   // cout << "target_err: " << target_err << endl; 
                    if(target_err<err){
                        sum = target_sum;
                        err = target_err;
                    }

                }
            }
        }
        return sum;
    }
};

使用分治的方法:

class Solution {
public:
    int threeSumClosest(vector<int>& nums, int target) {
        if( nums.size() < 3)
            return 0;
        sort(nums.begin(), nums.end());
        int sum_cloest;
        int result;
        int err_target = 10000;
        for(int i = 0; i < nums.size()-2; i++)
        {
            int j = i+1;
            int k = nums.size()-1;
            while(j < k)
            {
                int sum = nums[i]+nums[j]+nums[k];
                if(sum == target)
                    return sum;

                if(sum-target < 0 )
                {
                    j++;
                }
                else if(sum-target>0)
                {
                    k--;
                }
                if(abs(sum-target) <err_target)
                {
                    err_target = abs(sum-target);
                    result = sum;
                }
            }

        }
        return result;

    }
};

哈哈~今天也要加油( ⊙ o ⊙ )!

猜你喜欢

转载自blog.csdn.net/felaim/article/details/80375201
今日推荐