Menu
CoddyTech

Longest Subarray with Sum K

Dati gli interi nums e un valore obiettivo k, restituisci la lunghezza della sottosequenza contigua più lunga la cui somma degli elementi è esattamente k. Una sottosequenza contigua è una sequenza di elementi consecutivi lunga almeno un elemento. Alcuni valori possono essere zero o negativi. Se nessuna sottosequenza contigua ha somma pari a k, restituisci 0.

Funzione

longestSubarrayWithSumK(nums: integer-array, k: integer) → integer
numsinteger-array
gli interi da cercare, inclusi i numeri negativi e gli zeri
kinteger
la somma esatta che deve avere il sottovettore
Restituisceinteger
la lunghezza della sottosequenza contigua più lunga la cui somma è k, oppure 0 se non ce n’è nessuna

Vincoli

  • 1 ≤ nums.length ≤ 2 × 104
  • -104 ≤ nums[i] ≤ 104
  • -109 ≤ k ≤ 109
  • Ogni somma prefissa rimane compresa tra -2 × 108 e 2 × 108, quindi gli interi a 32 bit sono sufficienti.
  • Restituisci 0 quando nessun sottoarray ha somma pari a k.

Esempi

Input
nums = [2, -1, 3, 1, -4, 2, 3]k = 5
Output
5
Spiegazione
Tre sequenze sommano a 5: [2, 3] alla fine, [2, -1, 3, 1] all'inizio e [3, 1, -4, 2, 3] agli indici da 2 a 6. L'ultima è la più lunga, con 5 elementi.
challenge icon

Per approfondire

Come troveresti il sottoarray più lungo la cui somma è al massimo k, consentendo comunque valori negativi?

Ripristina il codice
def longestSubarrayWithSumK(nums, k):
    # Scrivi il codice qui

Test #1

Test #2

Test #3

Argomenti

nums = [2, -1, 3, 1, -4, 2, 3]
k = 5

Output atteso

5