1 var threeSumClosest = function(nums, target) { 2 if (nums.length < 3) { 3 return -1; 4 } 5 6 nums = nums.sort(function(num1, num2) { 7 return num1 - num2; 8 }); 9 10 console.log(nums); 11 12 var i, l, r, sum, ret, first = true; 13 14 for (i = 0; i < nums.length - 2; i++) { 15 l = i + 1; 16 r = nums.length - 1; 17 18 while (l < r) { 19 sum = nums[i] + nums[l] + nums[r]; 20 21 if (first) { 22 ret = sum; 23 first = false; 24 } else { 25 if (Math.abs(sum - target) < Math.abs(ret - target)) { 26 ret = sum; 27 } 28 29 if (sum === target) { 30 return target; 31 } else if (sum > target) { 32 r--; 33 } else { 34 l++; 35 } 36 } 37 } 38 } 39 40 return ret; 41 };