package week6; public class Solution { public int maximalSquare(char[][] matrix) { int m = matrix.length; if(m < 1) return 0; int n = matrix[0].length; int max = 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] = 1 + Math.min(dp[i-1][j-1], Math.min(dp[i-1][j], dp[i][j-1])); max = Math.max(max, dp[i][j]); } } } return max*max; } public int minPathSum(int[][] grid) { for(int i = 0; i < grid.length; i++) { for(int j = 0; j < grid[0].length; j++) { if(i == 0 && j == 0) continue; else if(i == 0) grid[i][j] = grid[i][j - 1] + grid[i][j]; else if(j == 0) grid[i][j] = grid[i - 1][j] + grid[i][j]; else grid[i][j] = Math.min(grid[i - 1][j], grid[i][j - 1]) + grid[i][j]; } } return grid[grid.length - 1][grid[0].length - 1]; } }