Menu
CoddyTech

Longest Subarray with Sum K

Étant donné les entiers nums et une cible k, renvoie la longueur du plus long sous-tableau dont la somme des éléments est exactement égale à k. Un sous-tableau est une suite d’éléments consécutifs d’au moins un élément. Certaines valeurs peuvent être nulles ou négatives. Si aucun sous-tableau n’a une somme égale à k, renvoie 0.

Fonction

longestSubarrayWithSumK(nums: integer-array, k: integer) → integer
numsinteger-array
les entiers à rechercher, y compris les nombres négatifs et les zéros
kinteger
la somme exacte que le sous-tableau doit avoir
Renvoieinteger
la longueur du plus long sous-tableau dont la somme est égale à k, ou 0 si aucun n’existe

Contraintes

  • 1 ≤ nums.length ≤ 2 × 104
  • -104 ≤ nums[i] ≤ 104
  • -109 ≤ k ≤ 109
  • Chaque somme préfixe reste comprise entre -2 × 108 et 2 × 108, donc des entiers sur 32 bits suffisent.
  • Renvoyez 0 lorsqu’aucun sous-tableau n’a une somme égale à k.

Exemples

Entrée
nums = [2, -1, 3, 1, -4, 2, 3]k = 5
Sortie
5
Explication
Trois séquences donnent un total de 5 : [2, 3] à la fin, [2, -1, 3, 1] au début et [3, 1, -4, 2, 3] aux indices 2 à 6. La dernière est la plus longue, avec 5 éléments.
challenge icon

Pour aller plus loin

Comment trouveriez-vous le sous-tableau contigu le plus long dont la somme est au plus k, tout en autorisant les valeurs négatives ?

Réinitialiser le code
def longestSubarrayWithSumK(nums, k):
    # Écrivez le code ici

Test #1

Test #2

Test #3

Arguments

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

Résultat attendu

5