C# Algorithm

[C#] LeetCode 문제 번호 84 ( X )

조민상 2024. 1. 5. 13:31

https://leetcode.com/problemset/

문제 번호 84 : Largest Rectangle in Histogram

 

히스토그램의 막대 높이를 나타내는 정수 높이 배열에서 각 막대의 너비가 1인 경우 히스토그램에서 가장 큰 직사각형의 면적을 반환합니다.

Example 1:

 

Input: heights = [2,1,5,6,2,3]
Output: 10
설명: 위는 각 막대의 너비가 1인 히스토그램입니다.
가장 큰 직사각형은 면적 = 10 단위인 빨간색 영역에 표시됩니다

 

Example 2:

Input: heights = [2,4]
Output: 4

 

제약 조건:

1 <= heights.length <= 10^5

0 <= heights[i] <= 10^4

 

public class Solution
{
    public int LargestRectangleArea(int[] heights)
    {
        int Largest = heights[0];
        if(heights.Length > 1)
        {
            int area;
            for(int p = 1; p < heights.Length; p++)
            {
                area = heights[p];
                for(int i = 1; p-i >= 0 && heights[p]<=heights[p-i]; i++)
                {
                    area += heights[p];
                }
                for(int i = 1; p+i <= heights.Length-1 && heights[p]<=heights[p+i]; i++)
                {
                    area += heights[p];
                }
                if(area > Largest)
                {
                    Largest = area;
                }
            }
        }
        return Largest;
    }
}

 

Time Limit Exceeded .

 

반환값은 제대로 나오나 시간초과가 떠버렸다.