Leetcode典型题解答和分析、归纳和汇总——T15(最接近的三数之和)

题目描述:

给定一个包括n个整数的数组nums和一个target。找出nums中的三个整数,使得它们的和与target最接近。返回这三个数的和。假定每组输入只存在唯一的答案。

题目解析:采用双指针的方式进行。跟前面题(三整数和解法类似)

class Solution{
    public:
    int threeSumClosest(vector<int>& nums, int target){
        sort(nums.begin(),nums.end());

        int ans = nums[0]+nums[1]+nums[2];
        for(int i=0;i<nums.size();i++)
        {
            int left=i+1,right=nums.size()-1;
            while(left<right) //当左指针小于右指针时
            {
                int sum=nums[left]+nums[right]+nums[i];
                if(abs(target-sum)<abs(target-ans)) ans = sum;
                if(sum==target) return ans;  //如果中间值与目标值相等了,则直接返回
                else if(sum<target) left++;
                else right--;
            }
        }
        return ans;
    }
};
发布了56 篇原创文章 · 获赞 7 · 访问量 4493

猜你喜欢

转载自blog.csdn.net/weixin_44504987/article/details/104284910