leetcode 85. 最大矩形(dp)

給定一個僅包含 0 和 1 、大小為 rows x cols 的二維二進制矩陣,找出只包含 1 的最大矩形,并返回其面積。

示例 1:
輸入:matrix = [[“1”,“0”,“1”,“0”,“0”],[“1”,“0”,“1”,“1”,“1”],[“1”,“1”,“1”,“1”,“1”],[“1”,“0”,“0”,“1”,“0”]]
輸出:6

代碼

class Solution {public int maximalRectangle(char[][] matrix) {if(matrix.length==0) return 0;int n=matrix.length,m=matrix[0].length;int[][][] dp=new int[n][m][2];//dp[i][j][0]表示matrix[i][j]左邊有多少個1,dp[i][j][1]表示matrix[i][j]上邊有多少個1dp[0][0][0]=matrix[0][0]=='1'?1:0;dp[0][0][1]=matrix[0][0]=='1'?1:0;int res=matrix[0][0]=='1'?1:0;for(int i=1;i<m;i++)//初始化最上面的一行{if(matrix[0][i]=='1'){dp[0][i][0]=dp[0][i-1][0]+1;dp[0][i][1]=1;res= Math.max(res,dp[0][i][0]*dp[0][i][1]);}}for(int i=1;i<n;i++)//初始化最左邊的一列{if(matrix[i][0]=='1'){dp[i][0][1]=dp[i-1][0][1]+1;dp[i][0][0]=1;res= Math.max(res, dp[i][0][1]*dp[i][0][0]);}}for(int i=1;i<n;i++)for(int j=1;j<m;j++){if(matrix[i][j]=='1'){dp[i][j][0]=dp[i][j-1][0]+1;dp[i][j][1]=dp[i-1][j][1]+1;//刷新當前位置的dp值int len=dp[i][j][0],le=1;res= Math.max(res, le*len);le++;for(int k=1;k<dp[i][j][1];k++,le++)//從當前行開始向上遍歷以當前位置為右下角的所有可能組成的矩陣,計算面積{len=Math.min(len,dp[i-k][j][0]);res= Math.max(res, le*len);}}}return res;}
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/392428.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/392428.shtml
英文地址,請注明出處:http://en.pswp.cn/news/392428.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

如何查看系統版本

1. winR,輸入cmd&#xff0c;確定&#xff0c;打開命令窗口&#xff0c;輸入msinfo32&#xff0c;注意要在英文狀態下輸入&#xff0c;回車。然后在彈出的窗口中就可以看到系統的具體版本號了。 2.winR,輸入cmd&#xff0c;確定&#xff0c;打開命令窗口&#xff0c;輸入ver&am…

java activemq jmx_通過JMX 獲取Activemq 隊列信息

首先在 activemq.xml 中新增以下屬性在broker 節點新增屬性 useJmx"true"在managementContext 節點配置斷開與訪問服務iP配置成功后啟動下面來看測試代碼/*** Title: ActivemqTest.java* Package activemq* Description: TODO(用一句話描述該文件做什么)* author LYL…

風能matlab仿真_發現潛力:使用計算機視覺對可再生風能發電場的主要區域進行分類(第1部分)

風能matlab仿真Github Repo: https://github.com/codeamt/WindFarmSpotterGithub回購&#xff1a; https : //github.com/codeamt/WindFarmSpotter This is a series:這是一個系列&#xff1a; Part 1: A Brief Introduction on Leveraging Edge Devices and Embedded AI to …

【Leetcode_easy】821. Shortest Distance to a Character

problem 821. Shortest Distance to a Character 參考 1. Leetcode_easy_821. Shortest Distance to a Character; 完轉載于:https://www.cnblogs.com/happyamyhope/p/11214805.html

tdd測試驅動開發課程介紹_測試驅動開發的實用介紹

tdd測試驅動開發課程介紹by Luca Piccinelli通過盧卡皮奇內利 測試驅動開發很難&#xff01; 這是不為人知的事實。 (Test Driven Development is hard! This is the untold truth about it.) These days you read a ton of articles about all the advantages of doing Test …

軟件安裝(JDK+MySQL+TOMCAT)

一&#xff0c;JDK安裝 1&#xff0c;查看當前Linux系統是否已經安裝了JDK 輸入 rpm -qa | grep java 如果有&#xff1a; 卸載兩個openJDK&#xff0c;輸入rpm -e --nodeps 要卸載的軟件 2&#xff0c;上傳JDK到Linux 3&#xff0c;安裝jdk運行需要的插件yum install gl…

leetcode 205. 同構字符串(hash)

給定兩個字符串 s 和 t&#xff0c;判斷它們是否是同構的。 如果 s 中的字符可以被替換得到 t &#xff0c;那么這兩個字符串是同構的。 所有出現的字符都必須用另一個字符替換&#xff0c;同時保留字符的順序。兩個字符不能映射到同一個字符上&#xff0c;但字符可以映射自己…

Java core 包_feilong-core 讓Java開發更簡便的工具包

## 背景在JAVA開發過程中,經常看到小伙伴直接從網上copy一長段代碼來使用,又或者寫的代碼很長很長很長...**痛點在于:*** 難以閱讀* 難以維護* sonar掃描結果債務長* codereview 被小伙伴鄙視* ....feilong-core focus on J2SE,是[feilong platform](https://github.com/venusd…

TensorFlow 2.X中的動手NLP深度學習模型準備

簡介&#xff1a;為什么我寫這篇文章 (Intro: why I wrote this post) Many state-of-the-art results in NLP problems are achieved by using DL (deep learning), and probably you want to use deep learning style to solve NLP problems as well. While there are a lot …

靜態代碼塊

靜態代碼塊 靜態代碼塊&#xff1a;定義在成員位置&#xff0c;使用static修飾的代碼塊{ }。位置&#xff1a;類中方法外。執行&#xff1a;隨著類的加載而執行且執行一次&#xff0c;優先于main方法和構造方法的執行。格式&#xff1a;作用&#xff1a; 給類變量進行初始化賦值…

異步api_如何設計無服務器異步API

異步apiby Garrett Vargas通過Garrett Vargas 如何設計無服務器異步API (How To Design a Serverless Async API) I recently ran a workshop to teach developers how to create an Alexa skill. The workshop material centered around a project to return car rental sear…

C# 序列化與反序列化json

與合作伙伴討論問題&#xff0c;說到的c與c#數據的轉換調用&#xff0c;正好就說到了序列化與反序列化&#xff0c;同樣也可用于不同語言間的調用&#xff0c;做了基礎示例&#xff0c;作以下整理&#xff1a; 1 using System.Data;2 using System.Drawing;3 using System.Linq…

學java 的要點_零基礎學Java,掌握Java的基礎要點

對于程序員群體來說&#xff0c;了解一定的技巧會對學習專業技能更有幫助&#xff0c;也更有助于在自己的職業發展中處于有利地位&#xff0c;無限互聯Java培訓專家今天就為大家總結Java程序員入門時需要掌握的基礎要點&#xff1a;掌握靜態方法和屬性靜態方法和屬性用于描述某…

實驗人員考評指標_了解實驗指標

實驗人員考評指標In the first part of my series on experimental design Thinking About Experimental Design, we covered the foundations of an experiment: the goals, the conditions, and the metrics. In this post, we will move away from the initial experimental…

leetcode 188. 買賣股票的最佳時機 IV(dp)

給定一個整數數組 prices &#xff0c;它的第 i 個元素 prices[i] 是一支給定的股票在第 i 天的價格。 設計一個算法來計算你所能獲取的最大利潤。你最多可以完成 k 筆交易。 注意&#xff1a;你不能同時參與多筆交易&#xff08;你必須在再次購買前出售掉之前的股票&#xf…

kotlin編寫后臺_在Kotlin編寫圖書館的提示

kotlin編寫后臺by Adam Arold亞當阿羅德(Adam Arold) 在Kotlin編寫圖書館的提示 (Tips for Writing a Library in Kotlin) Writing a library in Kotlin seems easy but it can get tricky if you want to support multiple platforms. In this article we’ll explore ways f…

1.Swift教程翻譯系列——關于Swift

英文版PDF下載地址http://download.csdn.net/detail/tsingheng/7480427 我本來是做JAVA的。可是有一顆折騰的心&#xff0c;蘋果公布Swift以后就下載了蘋果的開發文檔。啃了幾天。朦朦朧朧的看了個幾乎相同&#xff0c;想靜下心看能不能整個翻譯出來。我英語一般般&#xff0c;…

核心技術java基礎_JAVA核心技術I---JAVA基礎知識(集合set)

一&#xff1a;集合了解(一)確定性&#xff0c;互異性&#xff0c;無序性確定性&#xff1a;對任意對象都能判定其是否屬于某一個集合互異性&#xff1a;集合內每個元素都是無差異的&#xff0c;注意是內容差異無序性&#xff1a;集合內的順序無關(二)集合接口HashSet&#xff…

nba數據庫統計_NBA板塊的價值-從統計學上講

nba數據庫統計The idea is not to block every shot. The idea is to make your opponent believe that you might block every shot. — Bill Russel這個想法不是要阻止每一個鏡頭。 這個想法是讓你的對手相信你可能會阻擋每一個投籃。 —比爾羅素 The block in basketball ha…

leetcode 330. 按要求補齊數組(貪心算法)

給定一個已排序的正整數數組 nums&#xff0c;和一個正整數 n 。從 [1, n] 區間內選取任意個數字補充到 nums 中&#xff0c;使得 [1, n] 區間內的任何數字都可以用 nums 中某幾個數字的和來表示。請輸出滿足上述要求的最少需要補充的數字個數。 示例 1: 輸入: nums [1,3], …