União e interseção de listas

Crie um método que receba dois arrays de inteiros e retorne um array de interseção e um array de união.

  1. Array de interseção: Elementos presentes em ambos os arrays.
  2. Array de união: Elementos presentes no primeiro array, no segundo ou em ambos (não é uma operação OU exclusivo).

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.

int[] array1 = new int[]{5, 6, 6, 6, 8, 9};
int[] array2 = new int[]{3, 3, 4, 4, 5, 5, 8};

// Interseção: new int[]{5, 8}
// 5 e 8 são os únicos 2 números presentes nos dois arrays.

// União: new int[]{3, 4, 5, 6, 8, 9}
// Cada número está presente em pelo menos um dos arrays.

Exemplos

Program.intersectionUnion(new int[]{1, 2, 3, 4, 4}, new int[]{4, 5, 9}) ➞ new int[][]{new int[]{4}, new int[]{1, 2, 3, 4, 5, 9}}

Program.intersectionUnion(new int[]{1, 2, 3}, new int[]{4, 5, 6}) ➞ new int[][]{new int[]{}, new int[]{1, 2, 3, 4, 5, 6}}

Program.intersectionUnion(new int[]{1, 1}, new int[]{1, 1, 1, 1}) ➞ new int[][]{new int[]{1}, new int[]{1}}

Observações

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