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

 

转载于:https://www.cnblogs.com/HuoAA/p/5074226.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值