Menu
CoddyTech

Subarray Sum Equals K

Vous obtenez un tableau d’entiers nums et un entier k. Comptez les sous-tableaux dont les éléments ont une somme exactement égale à k. Un sous-tableau est une suite d’un ou plusieurs éléments voisins. Deux sous-tableaux sont comptés séparément lorsqu’ils commencent ou se terminent à des positions différentes, même s’ils contiennent les mêmes valeurs. Les valeurs peuvent être négatives ou nulles.

Fonction

subarraySum(nums: integer-array, k: integer) → integer
numsinteger-array
le tableau d’entiers, qui peut contenir des valeurs négatives et des zéros
kinteger
la somme qu’un sous-tableau doit atteindre pour être comptabilisé
Renvoieinteger
le nombre de sous-tableaux dont la somme des éléments est égale à k

Contraintes

  • 1 ≤ nums.length ≤ 2 × 104
  • -1000 ≤ nums[i] ≤ 1000
  • -107 ≤ k ≤ 107
  • Un tableau de cette longueur comporte au plus 200,010,000 sous-tableaux, donc la réponse tient dans un entier signé de 32 bits.

Exemples

Entrée
nums = [3, 4, -7, 1, 3, 3, 1, -4]k = 7
Sortie
4
Explication
Quatre séquences totalisent 7 : [3, 4], [1, 3, 3], [3, 3, 1] et [3, 4, -7, 1, 3, 3]. Dans la dernière, le -7 annule le 3 et le 4, et la somme remonte ensuite à 7 ; une séquence peut donc correspondre même après que sa somme a dépassé k.

lock icon+17 tests cachés à la soumission

challenge icon

Pour aller plus loin

Comment modifierais-tu la solution pour qu’elle renvoie la longueur du sous-tableau le plus long dont la somme est égale à k, toujours en O(n) ?

Réinitialiser le code
def subarraySum(nums, k):
    # Écrivez le code ici
Cas de test

Cas 1

Cas 2

Cas 3

Entrée

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

Attendu

4