1. /**
    2. * @param {number[]} nums
    3. * @return {number[][]}
    4. * [-4,-1,-1,0,1,2]
    5. */
    6. var threeSum = function (nums) {
    7. const list = []
    8. if (nums.length < 3) return []
    9. nums.sort((a, b) => a - b)
    10. for (let i = 0; i < nums.length; i++) {
    11. if(nums[i] ===nums[i - 1]) {
    12. continue
    13. }
    14. let left = i + 1,
    15. right = nums.length - 1
    16. while (right > left) {
    17. if (right === i) {
    18. right--
    19. } else if (nums[left] + nums[right] + nums[i] === 0) {
    20. list.push([nums[left], nums[right], nums[i]])
    21. while (nums[left] === nums[left + 1]) {
    22. left++
    23. }
    24. left++
    25. while (nums[right] === nums[right + 1]) {
    26. right--
    27. }
    28. right--
    29. } else if (nums[left] + nums[right] + nums[i] < 0) {
    30. left++
    31. } else {
    32. right--
    33. }
    34. }
    35. }
    36. return list
    37. };