Menu
CoddyTech

Maximum Product Subarray

בינוניתכנון דינמיpython iconjava iconcpp iconc iconjs icon+10

כפול את איברי תת־מערך של 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. ה־0 מחלק את המערך לשניים, וה־4 שבצד השני לא יכול לגבור על 60.
challenge icon

שאלת המשך

איך תדווח גם היכן מתחיל ומסתיים תת־המערך הטוב ביותר, ועדיין בזמן O(n) ובשטח O(1)?

איפוס הקוד
def maxProduct(nums):
    # כתבו את הקוד כאן

בדיקה #1

בדיקה #2

בדיקה #3

ארגומנט

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

הפלט הצפוי

60