题解 | #最大正方形#

最大正方形

http://www.nowcoder.com/practice/0058c4092cec44c2975e38223f10470e

import java.util.*;

public class Solution { /** * 最大正方形 * @param matrix char字符型二维数组 * @return int整型 */ public int solve (char[][] matrix) { if(matrix == null || matrix.length == 0)return 0; int height = matrix.length; int width = matrix[0].length; int[][] dp = new int[height + 1][width + 1]; int maxSide = 0;//最大正方形的宽 for (int i = 1; i <= height; i++) { for (int j = 1; j <= width; j++) { if (matrix[i - 1][j - 1] == '1') { //递推公式 dp[i][j] = Math.min(dp[i - 1][j], Math.min(dp[i - 1][j - 1], dp[i][j - 1])) + 1; //记录最大的边长 maxSide = Math.max(maxSide, dp[i][j]); } } } //返回正方形的面积 return maxSide * maxSide; // write code here // if(matrix == null||matrix.length==0){return 0;} // int m = matrix.length; // int n = matrix[0].length; // int res = 0; // int[][] dp = new int[m + 1][n + 1]; // for(int i = 1; i <= m; ++i){ // for(int j = 1; j <= n; ++j){ // if(matrix[i - 1][j - 1] == '1'){ // dp[i][j] = Math.min(Math.min(dp[i - 1][j], dp[i][j - 1]), // dp[i - 1][j - 1]) + 1; // res = Math.max(res, dp[i][j]); // } // } // } // return res * res; } }

我居南半坡 文章被收录于专栏

多刷题,积蓄力量,欢迎讨论

全部评论

相关推荐

11-03 18:50
门头沟学院 Java
迷茫的大四🐶:问就是马上到,一周五天,6个月以上,全国可飞
点赞 评论 收藏
分享
26应届求职ing:你这是报了豆音四哥的班?双非本硕拿这两个项目写简历里投100多家嵌软也没什么面试,感觉项目简单了,很多人用
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务