Menu
CoddyTech

Subsets

Você recebe uma lista nums de números inteiros distintos. Retorne todos os seus subconjuntos, incluindo o vazio e a lista completa; assim, n valores geram 2^n subconjuntos. Escreva cada subconjunto com seus valores em ordem crescente e liste os subconjuntos em ordem lexicográfica: compare os valores dos dois subconjuntos um a um; a primeira diferença decide, e um subconjunto que é o início de outro vem antes dele. Para [1, 2], a resposta é [[], [1], [1, 2], [2]].

Função

subsets(nums: integer-array) → integer-2d-array
numsinteger-array
os valores, todos diferentes, em qualquer ordem
Retornainteger-2d-array
todos os subconjuntos, cada um ordenado em ordem crescente, listados em ordem lexicográfica

Restrições

  • 1 ≤ nums.length ≤ 10
  • -10 ≤ nums[i] ≤ 10
  • Todos os valores em nums são diferentes.
  • nums pode vir em qualquer ordem.

Exemplos

Entrada
nums = [3, 1, 2]
Saída
[[], [1], [1, 2], [1, 2, 3], [1, 3], [2], [2, 3], [3]]
Explicação
Em ordem crescente, os valores são 1, 2, 3, e três valores geram 2^3 = 8 subconjuntos. [1, 2] vem antes de [1, 2, 3] porque é seu início, e [1, 2, 3] vem antes de [1, 3] porque 2 é menor que 3 na segunda posição.

lock icon+13 testes ocultos ao enviar

challenge icon

Para ir além

Você consegue produzir a mesma lista sem recursão, construindo cada subconjunto diretamente a partir do anterior?

Redefinir código
def subsets(nums):
    # Escreva o código aqui
Casos de teste

Caso 1

Caso 2

Caso 3

Entrada

nums = [3, 1, 2]

Esperado

[[], [1], [1, 2], [1, 2, 3], [1, 3], [2], [2, 3], [3]]