Menu
CoddyTech

House Robber

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

Fonksiyon

rob(nums: integer-array) → integer
numsinteger-array
sokak sırasına göre her evdeki para
Döndürürinteger
Birbirine bitişik 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 elde etmek için 0 ve 3 numaralı evlerden 5 ve 11'i alın. Art arda iki evi atlamak serbesttir ve burada diğer tüm planlardan daha iyi sonuç verir: 5 + 4 + 2 = 11 ve 3 + 11 = 14.

lock iconGönderirken +16 gizli test

challenge icon

Ek soru

Alınacak evleri ve toplamı döndür. Bu listeyi yeniden oluşturmak için tablodan neleri saklaman gerekiyor ve iki ara toplam bunu hâlâ yapabilir mi?

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

Durum 1

Durum 2

Durum 3

Girdi

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

Beklenen

16