Menu
CoddyTech

Maximum Product Subarray

اضرب عناصر مصفوفة فرعية من nums بعضها في بعض، وأعِد أكبر حاصل ضرب يمكن أن تنتجه أي مصفوفة فرعية. تأخذ المصفوفة الفرعية عناصر متتالية دون فجوات، ولا تكون فارغة أبدًا، لذا حتى المصفوفة التي تتكون من أعداد سالبة لها إجابة. يُسمح بالأصفار والقيم السالبة.

الدالة

maxProduct(nums: integer-array) → integer
numsinteger-array
الأعداد الصحيحة المراد ضربها، يتراوح كلٌّ منها بين -10 و10
تُرجعinteger
أكبر حاصل ضرب لمصفوفة فرعية غير فارغة

القيود

  • 1 ≤ nums.length ≤ 2 × 104
  • -10 ≤ nums[i] ≤ 10
  • حاصل ضرب كل مصفوفة فرعية يقع ضمن نطاق عدد صحيح موقّع من 32 بت.

أمثلة

المدخلات
nums = [2, -5, 3, -2, 0, 4]
المخرجات
60
الشرح
السالبان يلغي أحدهما الآخر: 2 × -5 × 3 × -2 = 60. يقسم الصفر المصفوفة إلى قسمين، والعدد 4 على الجانب الآخر لا يمكنه تجاوز 60.
challenge icon

سؤال إضافي

كيف يمكنك أيضًا تحديد موضعي بداية ونهاية أفضل مصفوفة فرعية، مع الحفاظ على زمن تنفيذ O(n) ومساحة O(1)؟

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

اختبار #1

اختبار #2

اختبار #3

وسيط

nums = [2, -5, 3, -2, 0, 4]

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

60