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).| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | classSolution {public:    intthreeSumClosest(vector<int>& nums, inttarget) {        intlen = nums.size();        if(len < 3) return0;        sort(nums.begin(), nums.end());        intsum = 0;        intleastdif = INT_MAX;        for(inti = 0; i < len - 2; i++) {            intl = i + 1, r = len - 1;            while(l < r) {                intdif = fabs(nums[i] + nums[l] + nums[r] - target);                if(dif < leastdif) {                    leastdif = dif;                    sum = nums[i] + nums[l] + nums[r];                }                elseif(nums[i] + nums[l] + nums[r] < target) {                    l++;                }                else{                    r--;                }            }        }        returnsum;    }}; | 
原文:http://www.cnblogs.com/zhxshseu/p/af219256eafc904b6acab29753157811.html