Menu
CoddyTech

House Robber

Des maisons sont alignées le long d’une rue, et nums[i] représente l’argent dans la maison i. Tu peux prendre l’argent dans les maisons de ton choix, mais jamais dans deux maisons côte à côte. Retourne le montant total maximal que tu peux prendre.

Fonction

rob(nums: integer-array) → integer
numsinteger-array
l’argent dans chaque maison, dans l’ordre de la rue
Renvoieinteger
le montant total le plus élevé que vous pouvez obtenir sans prendre dans deux maisons adjacentes

Contraintes

  • 1 ≤ nums.length ≤ 104
  • 0 ≤ nums[i] ≤ 1000
  • La réponse est au plus 5 × 106, elle tient donc dans un entier signé de 32 bits.

Exemples

Entrée
nums = [5, 3, 4, 11, 2]
Sortie
16
Explication
Prenez 5 et 11 dans les maisons 0 et 3 pour obtenir 16. Il est permis de sauter deux maisons consécutives, et ici, cette stratégie est meilleure que toutes les autres : 5 + 4 + 2 = 11 et 3 + 11 = 14.

lock icon+16 tests cachés à la soumission

challenge icon

Pour aller plus loin

Retourne les maisons à prendre ainsi que le total. Que dois-tu conserver du tableau pour reconstruire cette liste, et les deux totaux cumulés peuvent-ils encore le faire ?

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

Cas 1

Cas 2

Cas 3

Entrée

nums = [5, 3, 4, 11, 2]

Attendu

16