Menu
CoddyTech

4Sum

Recibes una lista de enteros nums y un entero target. Devuelve cada cuádrupla [a, b, c, d] cuyos cuatro valores se encuentran en cuatro posiciones diferentes de nums y suman target. Escribe cada cuádrupla con sus valores en orden no decreciente. Si se pueden elegir los mismos cuatro valores en posiciones diferentes, la cuádrupla aparece una sola vez. Ordena la respuesta primero por el primer valor, después por el segundo y luego por el tercero. Si ninguna cuádrupla cumple las condiciones, devuelve una lista vacía.

Función

fourSum(nums: integer-array, target: integer) → integer-2d-array
numsinteger-array
los números entre los que elegir, al menos uno
targetinteger
la suma que debe alcanzar cada cuarteto
Devuelveinteger-2d-array
los cuartetos distintos cuya suma sea el objetivo, cada uno ordenado y también la lista ordenada; una lista vacía si no hay ninguno

Restricciones

  • 1 ≤ nums.length ≤ 200
  • -108 ≤ nums[i] ≤ 108
  • -109 ≤ target ≤ 109
  • La suma de cuatro valores cualesquiera se encuentra entre -4 × 108 y 4 × 108, así que cabe en un entero de 32 bits.
  • Los cuádruples que contienen los mismos cuatro valores cuentan como uno.

Ejemplos

Entrada
nums = [3, -1, 0, 2, -2, 1, -3]target = 1
Salida
[[-3, -1, 2, 3], [-3, 0, 1, 3], [-2, -1, 1, 3], [-2, 0, 1, 2]]
Explicación
Cada uno de los cuatro cuádruples suma 1, por ejemplo -3 + (-1) + 2 + 3. Los dos que empiezan por -3 van primero, ordenados por su segundo valor: -1 antes que 0.
challenge icon

Para ir más allá

Cuenta los conjuntos de cuatro posiciones cuyos valores suman target, en lugar de los cuádruples distintos. El segundo ejemplo tiene 15. ¿Puedes hacerlo en O(n²)?

Restablecer código
def fourSum(nums, target):
    # Escribe el código aquí

Prueba #1

Prueba #2

Prueba #3

Argumentos

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

Salida Esperada

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