16. 3Sum Closest leetcode(array)

来源:互联网 发布:被淘宝店家限制购买 编辑:程序博客网 时间:2024/05/21 18:44
  1. 3Sum Closest
    For example, given array S = {-1 2 1 -4}, and target = 1.
    The sum that is closest to the target is 2. (-1 + 2 + 1 = 2).
    同15的3sum类似
int threeSumClosest(vector<int>& nums, int target) {        vector<vector<int> > ret;        int size = nums.size();        sort(nums.begin(), nums.end());        int sum = nums[0]+nums[1]+nums[size-1];        int minDis = sum - target;        for(int i = 0; i < size; i++)        {            int j = i + 1;            int k = size -1;            while(j<k)            {                sum = nums[i]+nums[j]+nums[k];                if(abs(sum - target) < abs(minDis)) //注意这部分在这里,不构成以下的if-else,无语。。。。。。                {                    minDis = sum - target;                }                //minDis = sum - target;                if(sum == target)//增加这部分处理,是对于{1,2,3,4,5,6,7} target=10,这种一旦找到1,2,7三个数,则不用继续遍历,继续                {                    return target;                }                else if(sum > target)                {                    k--;                }                else                {                    j++;                }            }        }        return minDis + target;    }
0 0
原创粉丝点击