Menu
CoddyTech

Burst Balloons

נתונה שורת בלונים בתור nums, כאשר nums[i] הוא המספר שעל בלון i. מפוצצים את כולם, אחד בכל פעם, בכל סדר שתבחרו. פיצוץ בלון מזכה ב־left × nums[i] × right מטבעות, כאשר left ו־right הם המספרים שעל שכניו הנוכחיים: הבלונים הקרובים ביותר מכל צד שעדיין נמצאים בשורה. שכן חסר, מעבר לאחד מקצות השורה, נחשב ל־1. לאחר פיצוץ, שני השכנים נעשים סמוכים זה לזה. החזירו את מספר המטבעות המרבי שתוכלו לאסוף.

פונקציה

maxCoins(nums: integer-array) → integer
numsinteger-array
המספרים על הבלונים, משמאל לימין
מחזירהinteger
המספר המרבי של מטבעות שאפשר לאסוף על ידי פיצוץ כל הבלונים

אילוצים

  • 1 ≤ nums.length ≤ 300
  • 0 ≤ nums[i] ≤ 100
  • התשובה קטנה מ־3 × 108, ולכן היא נכנסת למספר שלם מסומן בן 32 סיביות.

דוגמאות

קלט
nums = [2, 4, 3]
פלט
33
הסבר
פוצץ את 4 הראשונים כדי לקבל 2 × 4 × 3 = 24 מטבעות. ה־2 וה־3 הם עכשיו שכנים, ולכן פיצוץ ה־2 מזכה ב־1 × 2 × 3 = 6, וה־3, שעכשיו לבדו, מזכה ב־1 × 3 × 1 = 3. הסכום הוא 33, ושום סדר אחר לא מניב יותר: פיצוץ ה־2 הקטן תחילה כבר מגביל אותך ל־24.

lock icon+15 בדיקות נסתרות בשליחה

challenge icon

שאלת המשך

האם תוכל גם להחזיר הזמנה מתפרצת אחת שמניבה את מספר המטבעות הגדול ביותר?

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

מקרה 1

מקרה 2

מקרה 3

קלט

nums = [2, 4, 3]

צפוי

33