União e interseção de listas

Crie uma função que receba duas listas e retorne uma lista de interseção e uma lista de união.

  1. Lista de interseção: Elementos compartilhados pelas duas listas.
  2. Lista de união: Elementos que existem na primeira lista, na segunda ou em ambas (não uma OR exclusiva).

Embora as listas de entrada possam conter números duplicados, as listas de interseção e união retornadas devem ser convertidas em conjuntos; isto é, não devem conter duplicatas. As listas retornadas devem ser ordenadas em ordem crescente.

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

Intersection: [5, 8]
# 5 e 8 são os únicos 2 números que existem nas duas listas.

Union: [3, 4, 5, 6, 8, 9]
# Cada número existe em pelo menos uma lista.

Exemplos

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

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

intersection_union([1, 1], [1, 1, 1, 1]) ➞ [[1], [1]]

Observações

  • A ordem da saída deve ser: [Intersection], [Union].
  • Lembre-se de que ambas as listas de saída devem estar em ordem crescente.
  • Cada lista de entrada terá pelo menos um elemento.
  • Se as duas listas forem disjuntas (não compartilharem nenhum elemento), retorne uma lista vazia [] para a interseção.