Menu
CoddyTech

House Robber

Evler bir cadde boyunca sıra hâlinde dizilmiştir ve nums[i], i numaralı evdeki para miktarıdır. İstediğin evlerden para alabilirsin, ancak yan yana duran iki evden asla alamazsın. Alabileceğin en büyük toplamı döndür.

Fonksiyon

rob(nums: integer-array) → integer
numsinteger-array
her evdeki para, sokak sırasına göre
Döndürürinteger
Yan yana iki evden almadan alabileceğin en büyük toplam

Kısıtlar

  • 1 ≤ nums.length ≤ 104
  • 0 ≤ nums[i] ≤ 1000
  • Yanıt en fazla 5 × 106, bu nedenle işaretli 32 bitlik bir tam sayıya sığar.

Örnekler

Girdi
nums = [5, 3, 4, 11, 2]
Çıktı
16
Açıklama
16 için 0 ve 3 numaralı evlerden 5 ve 11'i al. Arka arkaya iki evi atlamak serbesttir ve burada diğer tüm planlardan daha iyi sonuç verir: 5 + 4 + 2 = 11 ve 3 + 11 = 14.
challenge icon

Ek soru

Alınacak evleri ve toplamı döndür. Bu listeyi yeniden oluşturmak için tablodan neyi saklamalısın ve bunu iki birikimli toplam hâlâ yapabilir mi?

Kodu sıfırla
def rob(nums):
    # Kodu buraya yazın

Test #1

Test #2

Test #3

Argüman

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

Beklenen Çıktı

16