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.

lock icon+17 test nascosti all’invio

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
Casi di test

Caso 1

Caso 2

Caso 3

Input

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

Atteso

4