日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Leetcode--84. 柱状图中最大的矩形

發(fā)布時間:2024/7/19 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Leetcode--84. 柱状图中最大的矩形 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

給定 n 個非負整數,用來表示柱狀圖中各個柱子的高度。每個柱子彼此相鄰,且寬度為 1 。

求在該柱狀圖中,能夠勾勒出來的矩形的最大面積。

以上是柱狀圖的示例,其中每個柱子的寬度為 1,給定的高度為?[2,1,5,6,2,3]。

圖中陰影部分為所能勾勒出的最大矩形面積,其面積為?10?個單位。

?

示例:

輸入: [2,1,5,6,2,3]
輸出: 10

思路:

時間復雜度:o(n^2)

從i=0開始遍歷,每次都計算出以當年位置為最后位置的各矩形面積并比較大小

例如本題,i=3時,dp[3]=6

只包含當前柱體的面積是6

向前遍歷,寬度加1,高度取二者中最小的? ?即2*5=10

繼續(xù)向前遍歷,寬度加1,高度取三者中最小,即3*1=3

繼續(xù)........即4*1=4

提交的代碼:

class Solution {
? ? public int largestRectangleArea(int[] heights) {
? ? ? ?if(heights.length==0)
? ? {
? ? ? ? return 0;
? ? }
?? ?int max=heights[0],x,y,t;
?? ?for(int i =0;i<heights.length;i++)
?? ?{
?? ??? ?x=0;
?? ??? ?y=heights[i];
?? ??? ?for(int j=i;j>=0;j--)
?? ??? ?{
?? ??? ??? ?x++;
?? ??? ??? ?y = Math.min(y, heights[j]);
?? ??? ??? ?t = x*y;
?? ??? ??? ?max = Math.max(max, t);
?? ??? ?}
?? ?}
?? ?return max;
? ? }
}

完整的代碼:


public class Solution84 {
public static int largestRectangleArea(int[] heights) {
?? ?if(heights.length==0)
? ? {
? ? ? ? return 0;
? ? }
?? ?int max=heights[0],x,y,t;
?? ?for(int i =0;i<heights.length;i++)
?? ?{
?? ??? ?x=0;
?? ??? ?y=heights[i];
?? ??? ?for(int j=i;j>=0;j--)
?? ??? ?{
?? ??? ??? ?x++;
?? ??? ??? ?y = Math.min(y, heights[j]);
?? ??? ??? ?t = x*y;
?? ??? ??? ?max = Math.max(max, t);
?? ??? ?}
?? ?}
?? ?return max;
? ? ? ??
? ? }
public static void main(String[] args)
{
?? ?int nums[] = {2,1,5,6,2,3};
?? ?System.out.println(largestRectangleArea(nums));
}
}
?

總結

以上是生活随笔為你收集整理的Leetcode--84. 柱状图中最大的矩形的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。