Problema da soma de três elementos

Escreva uma função que retorne todos os conjuntos de três elementos cuja soma seja 0.

Exemplos

ThreeSum(new int[] { 0, 1, -1, -1, 2 }) ➞ { { 0, 1, -1 }, { -1, -1, 2 } }

ThreeSum(new int[] { 0, 0, 0, 5, -5 }) ➞ { { 0, 0, 0 }, { 0, 5, -5 } }

ThreeSum(new int[] { 1, 2, 3 }) ➞ { }

ThreeSum(new int[1]) ➞ { }

Observações

  • O array original pode conter números duplicados.
  • Cada subarray de três elementos na sua saída deve ser distinto.
  • Os subarrays devem ser ordenados pelo primeiro elemento do subarray.
  • Os próprios subarrays devem ser ordenados da mesma forma que o array original.
  • Retorne um array vazio se nenhum conjunto de três elementos somar zero.
  • Retorne um array vazio se houver menos de três elementos.