Menu
CoddyTech
flag Ar iconالعربيةdown icon

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.

lock icon+16 اختبارات مخفية عند الإرسال

challenge icon

سؤال إضافي

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

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

الحالة 1

الحالة 2

الحالة 3

المدخلات

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

المتوقع

16