https://leetcode.cn/problems/3sum/
    中等
    需要注意的点

    1. nums.sort() 排序
    2. if i > 0 and nums[i] == nums[i-1]: 这句判断
    3. 跳过left right

      1. class Solution:
      2. def threeSum(self, nums: List[int]) -> List[List[int]]:
      3. if not nums or len(nums) < 3:
      4. return []
      5. size = len(nums)
      6. # 1
      7. nums.sort()
      8. res = []
      9. for i in range(size):
      10. if i > 0 and nums[i] == nums[i-1]:
      11. continue
      12. left = i+1
      13. right = size-1
      14. while left < right:
      15. sum = nums[i] + nums[left]+nums[right]
      16. if sum == 0:
      17. res.append([nums[i], nums[left], nums[right]])
      18. # 3
      19. while left < right and nums[left] == nums[left+1]:
      20. left += 1
      21. left += 1
      22. while left < right and nums[right] == nums[right-1]:
      23. right -= 1
      24. right -= 1
      25. elif sum >0:
      26. right -= 1
      27. else:
      28. left += 1
      29. return res