Menu
CoddyTech

4Sum

Você recebe uma lista de números inteiros nums e um número inteiro target. Retorne cada quádrupla [a, b, c, d] cujos quatro valores ocupam quatro posições diferentes de nums e somam target. Escreva cada quádrupla com seus valores em ordem não decrescente. Se os mesmos quatro valores puderem ser escolhidos de posições diferentes, a quádrupla ainda deverá aparecer apenas uma vez. Ordene a resposta pelo primeiro valor, depois pelo segundo e, em seguida, pelo terceiro. Se nenhuma quádrupla funcionar, retorne uma lista vazia.

Função

fourSum(nums: integer-array, target: integer) → integer-2d-array
numsinteger-array
os números para escolher, pelo menos um
targetinteger
a soma que cada quarteto deve atingir
Retornainteger-2d-array
os quartetos distintos cuja soma é o alvo, cada um ordenado, e a lista também ordenada; uma lista vazia se não houver nenhum

Restrições

  • 1 ≤ nums.length ≤ 200
  • -108 ≤ nums[i] ≤ 108
  • -109 ≤ target ≤ 109
  • A soma de quaisquer quatro valores fica entre -4 × 108 e 4 × 108, então cabe em um inteiro de 32 bits.
  • Quartetos que contêm os mesmos quatro valores contam como um só.

Exemplos

Entrada
nums = [3, -1, 0, 2, -2, 1, -3]target = 1
Saída
[[-3, -1, 2, 3], [-3, 0, 1, 3], [-2, -1, 1, 3], [-2, 0, 1, 2]]
Explicação
Cada um dos quatro quartetos soma 1, por exemplo -3 + (-1) + 2 + 3. Os dois que começam com -3 vêm primeiro, ordenados pelo segundo valor: -1 antes de 0.
challenge icon

Para ir além

Conte os conjuntos de quatro posições cujos valores somam target, em vez das quadras distintas. O segundo exemplo tem 15. Você consegue fazer isso em O(n²)?

Redefinir código
def fourSum(nums, target):
    # Escreva o código aqui

Teste #1

Teste #2

Teste #3

Argumentos

nums = [3, -1, 0, 2, -2, 1, -3]
target = 1

Saída Esperada

[[-3, -1, 2, 3], [-3, 0, 1, 3], [-2, -1, 1, 3], [-2, 0, 1, 2]]