4Sum

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

 

posted @ 2015-12-24 20:29  叫我霍啊啊啊  阅读(77)  评论(0编辑  收藏  举报