asp net做购物网站,佛山网站建设方案咨询,如何形容网站开发公司技术经验,中国小康建设网 官方网站思路 动态规划#xff0c;这题主要得弄明白状态转换方程#xff0c;dp[i][j]表示以#xff08;i,j#xff09;为右下角的最大正方形
解题方法 1.首先将第一行和第一列初始化#xff0c;当对应位置的matrix为’0’时#xff0c;dp数组对应位置也为零#xff0c;否则为1 … 思路 动态规划这题主要得弄明白状态转换方程dp[i][j]表示以i,j为右下角的最大正方形
解题方法 1.首先将第一行和第一列初始化当对应位置的matrix为’0’时dp数组对应位置也为零否则为1 2.对剩下其他位置进行遍历若对应位置的matrix为’0’时dp数组对应位置也为零若不为’0’则为dp[i][j]Math.min(dp[i-1][j],Math.min(dp[i-1][j-1],dp[i][j-1]))1 3.最后dp数组中最大值的平方即为答案
Code
class Solution {public int maximalSquare(char[][] matrix) {int ans0;int rowmatrix.length;int colsmatrix[0].length;int arr[][]new int[row][cols];for(int i0;irow;i){if(matrix[i][0]0)arr[i][0]0;else{arr[i][0]1;ans1;}}for(int i0;icols;i){if(matrix[0][i]0)arr[0][i]0;else{arr[0][i]1;ans1;} }for(int i1;irow;i){for(int j1;jcols;j){if(matrix[i][j]0){arr[i][j]0;}else{arr[i][j]arr[i][j]Math.min(arr[i-1][j],Math.min(arr[i-1][j-1],arr[i][j-1]))1;}ansMath.max(arr[i][j],ans);}}return ans*ans;}
}