Menu
CoddyTech

Largest Rectangle in Histogram

היסטוגרמה היא שורה של עמודות צמודות זו לזו ללא רווחים, שכל אחת מהן ברוחב יחידה אחת: heights[i] הוא הגובה של עמודה i. מלבן בתוכה מכסה רצף של עמודות סמוכות, וגובהו אינו יכול לעלות על גובה העמודה הנמוכה ביותר ברצף הזה.

החזירו את השטח הגדול ביותר שמלבן כזה יכול לכסות.

פונקציה

largestRectangleArea(heights: integer-array) → integer
heightsinteger-array
גובהו של כל עמודה, משמאל לימין
מחזירהinteger
השטח של המלבן הגדול ביותר שנכנס להיסטוגרמה

אילוצים

  • 1 ≤ heights.length ≤ 2 × 104
  • 0 ≤ heights[i] ≤ 105
  • כל עמודה היא ברוחב של יחידה אחת, ולכן מלבן מעל העמודות i עד j הוא ברוחב של j-i+1 יחידות.

דוגמאות

קלט
heights = [2, 5, 6, 3, 4, 1]
פלט
12
הסבר
כל ארבעת העמודות 5, 6, 3 ו-4 הן בגובה 3 לפחות, ולכן מלבן בגובה 3 משתרע על פניהן: 3 × 4 = 12. שתי העמודות הגבוהות ביותר, 5 ו-6, נותנות רק 5 × 2 = 10.

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

challenge icon

שאלת המשך

נניח שלכל עמודה יש רוחב משלה, הנתון במערך שני. מה משתנה בפתרון המחסנית במעבר יחיד?

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

מקרה 1

מקרה 2

מקרה 3

קלט

heights = [2, 5, 6, 3, 4, 1]

צפוי

12