1 var threeSum = function(nums) { 2 var res = [], 3 i, l, r, sum; 4 5 if (nums.length < 3) { 6 return res; 7 } 8 9 nums = nums.sort(function(num1, num2) { 10 return num1 - num2; 11 }); 12 13 for (i = 0; i < nums.length - 2 && nums[i] <= 0; i++) { 14 //去重 15 if (nums[i] === nums[i - 1]) { 16 continue; 17 } 18 l = i + 1; 19 r = nums.length - 1; 20 while (l < r) { 21 sum = nums[i] + nums[l] + nums[r] 22 if (sum < 0) { 23 l++; 24 } else if (sum > 0) { 25 r--; 26 } else { 27 //去重 28 if ((l === i + 1) || (l > i + 1 && nums[l] !== nums[l - 1])) { 29 res[res.length] = [nums[i], nums[l], nums[r]]; 30 } 31 l++; 32 } 33 } 34 } 35 36 return res; 37 };