Menu
CoddyTech

Largest Rectangle in Histogram

어려움단조 스택python iconjava iconcpp iconc iconjs icon+10

히스토그램은 간격 없이 나란히 놓인 막대들의 행이며, 각 막대의 너비는 1단위입니다. heights[i]는 i번째 막대의 높이입니다. 히스토그램 안의 직사각형은 서로 이웃한 막대들을 연속해서 덮으며, 그 연속된 막대 중 가장 낮은 막대보다 높을 수 없습니다.

이러한 직사각형이 가질 수 있는 가장 큰 넓이를 반환하세요.

함수

largestRectangleArea(heights: integer-array) → integer
heightsinteger-array
각 막대의 높이(왼쪽에서 오른쪽으로)
반환값integer
히스토그램에 들어가는 가장 큰 직사각형의 넓이

제약 조건

  • 1 ≤ heights.length ≤ 2 × 104
  • 0 ≤ heights[i] ≤ 105
  • 각 막대의 너비는 1단위이므로, 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