Menu
CoddyTech

House Robber

تقف المنازل في صف على امتداد شارع، ويمثّل nums[i] المال الموجود في المنزل i. يمكنك أخذ المال من أي منازل تختارها، لكن لا يمكنك أخذه من منزلين متجاورين أبدًا. أعد أكبر مجموع يمكنك أخذه.

الدالة

rob(nums: integer-array) → integer
numsinteger-array
المبلغ الموجود في كل منزل، حسب ترتيب الشارع
تُرجعinteger
أكبر مجموع يمكنك الحصول عليه دون الأخذ من منزلين متجاورين

القيود

  • 1 ≤ nums.length ≤ 104
  • 0 ≤ nums[i] ≤ 1000
  • الإجابة لا تتجاوز 5 × 106، لذا فهي تلائم عددًا صحيحًا موقّعًا من 32 بت.

أمثلة

المدخلات
nums = [5, 3, 4, 11, 2]
المخرجات
16
الشرح
خذ 5 و11 من المنزلين 0 و3 لتحصل على 16. يُسمح بتخطي منزلين متتاليين، وهنا يتفوق ذلك على كل خطة أخرى: 5 + 4 + 2 = 11 و3 + 11 = 14.
challenge icon

سؤال إضافي

أعِد المنازل المطلوب أخذها، بالإضافة إلى الإجمالي. ما الذي يجب أن تحتفظ به من الجدول لإعادة بناء تلك القائمة، وهل لا يزال بإمكان إجماليين متراكمين إنجاز ذلك؟

إعادة ضبط الشيفرة
def rob(nums):
    # اكتب الكود هنا

اختبار #1

اختبار #2

اختبار #3

وسيط

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

الإخراج المتوقع

16