União e interseção de arrays

Crie uma função que receba dois arrays e retorne um array de interseção e um array de união.

  1. Array de interseção: elementos compartilhados por ambos.
  2. Array de união: elementos que existem no primeiro ou no segundo array, ou em ambos (não uma OR exclusiva).

Embora os arrays de entrada possam conter números duplicados, os arrays de interseção e união retornados devem ser convertidos em conjuntos; ou seja, não devem conter duplicatas. Os arrays retornados devem ser ordenados em ordem crescente.

Array 1: [5, 6, 6, 6, 8, 9]
Array 2: [3, 3, 4, 4, 5, 5, 8]

Intersection: [5, 8]
// 5 e 8 são os únicos 2 números que existem em ambos os arrays.

Union: [3, 4, 5, 6, 8, 9]
// Cada número existe em pelo menos um dos arrays.

Exemplos

intersectionUnion([1, 2, 3, 4, 4], [4, 5, 9]) ➞ [[4], [1, 2, 3, 4, 5, 9]]

intersectionUnion([1, 2, 3], [4, 5, 6]) ➞ [[], [1, 2, 3, 4, 5, 6]]

intersectionUnion([1, 1], [1, 1, 1, 1]) ➞ [[1], [1]]

Observações

  • A ordem da saída deve ser: [Intersection], [Union].
  • Lembre-se de que ambos os arrays de saída devem estar em ordem crescente.
  • Cada array de entrada terá pelo menos um elemento.
  • Se ambos os arrays forem disjuntos (não compartilharem nenhum elemento), retorne um array vazio [] para a interseção.