Menu
CoddyTech

Subarray Sum Equals K

Ti viene fornito un array di interi nums e un intero k. Conta i sottoarray i cui elementi sommati danno esattamente k. Un sottoarray è una sequenza di uno o più elementi adiacenti. Due sottoarray si contano separatamente quando iniziano o terminano in posizioni diverse, anche se contengono gli stessi valori. I valori possono essere negativi o zero.

Funzione

subarraySum(nums: integer-array, k: integer) → integer
numsinteger-array
l'array di numeri interi, che può contenere valori negativi e zeri
kinteger
la somma che un sottarray deve raggiungere per essere conteggiato
Restituisceinteger
il numero di sottoarray i cui elementi sommano a k

Vincoli

  • 1 ≤ nums.length ≤ 2 × 104
  • -1000 ≤ nums[i] ≤ 1000
  • -107 ≤ k ≤ 107
  • Un array di questa lunghezza ha al massimo 200,010,000 sottoarray, quindi il risultato rientra in un intero con segno a 32 bit.

Esempi

Input
nums = [3, 4, -7, 1, 3, 3, 1, -4]k = 7
Output
4
Spiegazione
Quattro sequenze hanno somma 7: [3, 4], [1, 3, 3], [3, 3, 1] e [3, 4, -7, 1, 3, 3]. Nell’ultima, -7 annulla il 3 e il 4, e la somma risale a 7 più avanti, quindi una sequenza può corrispondere anche dopo che la sua somma ha superato k.
challenge icon

Per approfondire

Come modificheresti la soluzione per restituire la lunghezza del sottarray più lungo la cui somma è k, sempre in tempo O(n)?

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

Test #1

Test #2

Test #3

Argomenti

nums = [3, 4, -7, 1, 3, 3, 1, -4]
k = 7

Output atteso

4