给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组。

注意:答案中不可以包含重复的三元组。

例如, 给定数组 nums = [-1, 0, 1, 2, -1, -4],

满足要求的三元组集合为:
[
  [-1, 0, 1],
  [-1, -1, 2]
]
# @param {Integer[]} nums
# @return {Integer[][]}
def three_sum(nums)
    arr = nums.sort
    tmp_arr = Array.new

    arr.each_with_index do |_, a_index|
      next if a_index != 0 && arr[a_index] == arr[a_index - 1]
      start = a_index
      left = a_index + 1
      right = arr.length - 1
      while left < right
        sum = arr[start] + arr[left] + arr[right]
        right -= 1 if sum > 0
        left += 1 if sum < 0
        if sum.zero?
          tmp_arr << [arr[start], arr[left], arr[right]]
          left += 1
          right -= 1
        end
      end
    end

    p tmp_arr.uniq
end