Menu
CoddyTech

4Sum

Ti viene fornito un elenco di numeri interi nums e un numero intero target. Restituisci ogni quadrupla [a, b, c, d] i cui quattro valori si trovano in quattro posizioni diverse di nums e la cui somma è uguale a target. Scrivi ogni quadrupla con i valori in ordine non decrescente. Se gli stessi quattro valori possono essere scelti da posizioni diverse, la quadrupla compare comunque una sola volta. Ordina la risposta in base al primo valore, poi al secondo e infine al terzo. Se nessuna quadrupla è valida, restituisci un elenco vuoto.

Funzione

fourSum(nums: integer-array, target: integer) → integer-2d-array
numsinteger-array
i numeri tra cui scegliere, almeno uno
targetinteger
la somma che ogni quadrupla deve raggiungere
Restituisceinteger-2d-array
le quadrupletti distinti con somma target, ciascuno ordinato, anche la lista ordinata; una lista vuota se non ce ne sono

Vincoli

  • 1 ≤ nums.length ≤ 200
  • -108 ≤ nums[i] ≤ 108
  • -109 ≤ target ≤ 109
  • La somma di quattro valori qualsiasi è compresa tra -4 × 108 e 4 × 108, quindi rientra in un intero a 32 bit.
  • Le quadruplette che contengono gli stessi quattro valori contano come una sola.

Esempi

Input
nums = [3, -1, 0, 2, -2, 1, -3]target = 1
Output
[[-3, -1, 2, 3], [-3, 0, 1, 3], [-2, -1, 1, 3], [-2, 0, 1, 2]]
Spiegazione
Ciascuna delle quattro quadruple ha una somma pari a 1, ad esempio -3 + (-1) + 2 + 3. Le due che iniziano con -3 vengono per prime, ordinate in base al secondo valore: -1 prima di 0.
challenge icon

Per approfondire

Conta gli insiemi di quattro posizioni i cui valori sommano a target, anziché le quadruple distinte. Il secondo esempio ne ha 15. Riesci a farlo in O(n²)?

Ripristina il codice
def fourSum(nums, target):
    # Scrivi il codice qui

Test #1

Test #2

Test #3

Argomenti

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

Output atteso

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