Guest User

Untitled

a guest
Jan 20th, 2018
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.08 KB | None | 0 0
  1. var threeSum = function(nums) {
  2. var len = nums.length;
  3. if(len < 3) return [];
  4. nums.sort(function(a,b){
  5. return a-b;
  6. })
  7. if(nums[0] > 0 || nums[0] + nums[1] + nums[2] > 0) return [];
  8. if(len === 3) {
  9. if(nums[0] + nums[1] + nums[2] === 0) return [nums];
  10. else return [];
  11. }
  12. //console.log(nums);
  13.  
  14. var result = [];
  15. var checker = '';
  16.  
  17. for(var i=0; i<len; i++){
  18. var sum = -nums[i];
  19. for(var j=i+1, k = len - 1; j<k;){
  20. //console.log(i + ', ' + j + ', ' + k + ': ' + nums[i] + ', ' + nums[j] + ', ' + nums[k]);
  21. var temp = nums[j] + nums[k];
  22. if(temp < sum){
  23. j++;
  24. } else if(temp > sum){
  25. k--;
  26. } else {
  27. var triplet = [nums[i], nums[j], nums[k]];
  28. result.push(triplet);
  29.  
  30. //skip j term if it's a duplicate
  31. while(nums[j] === nums[j+1] && j<len) j++;
  32. //skip k term if it's a duplicate
  33. while(nums[k] === nums[k-1] && k>0) k--;
  34. j++;
  35. k--;
  36. }
  37. }
  38. //skip i term if it's a duplicate
  39. while(nums[i] === nums[i+1] && i<len) i++;
  40. }
  41.  
  42. return result;
  43. };
Add Comment
Please, Sign In to add comment