3Sum

 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 };

 

posted @ 2015-12-07 10:17  将军喊俺哥  阅读(118)  评论(0编辑  收藏  举报