Medium
Given an m x n binary matrix filled with 0’s and 1’s, find the largest square containing only 1’s and return its area.
Example 1:

Input: matrix = [[“1”,”0”,”1”,”0”,”0”],[“1”,”0”,”1”,”1”,”1”],[“1”,”1”,”1”,”1”,”1”],[“1”,”0”,”0”,”1”,”0”]]
Output: 4
Example 2:

Input: matrix = [[“0”,”1”],[“1”,”0”]]
Output: 1
Example 3:
Input: matrix = [[“0”]]
Output: 0
Constraints:
m == matrix.lengthn == matrix[i].length1 <= m, n <= 300matrix[i][j] is '0' or '1'.public class Solution {
public int maximalSquare(char[][] matrix) {
int m = matrix.length;
if (m == 0) {
return 0;
}
int n = matrix[0].length;
if (n == 0) {
return 0;
}
int[][] dp = new int[m + 1][n + 1];
int max = 0;
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
if (matrix[i][j] == '1') {
// 1 + minimum from cell above, cell to the left, cell diagonal upper-left
int next = 1 + Math.min(dp[i][j], Math.min(dp[i + 1][j], dp[i][j + 1]));
// keep track of the maximum value seen
if (next > max) {
max = next;
}
dp[i + 1][j + 1] = next;
}
}
}
return max * max;
}
}
Time Complexity (Big O Time):
m and n variables based on the dimensions of the input matrix takes O(1) time.dp of size (m + 1) x (n + 1) takes O(m * n) time, where “m” and “n” are the dimensions of the input matrix.max) in the DP table.Overall, the dominant factor in terms of time complexity is the DP table filling step, which is O(m * n).
Space Complexity (Big O Space):
dp):
m, n, and max is O(1), as they occupy constant space.In summary, the space complexity is primarily determined by the DP table, which is O(m * n), and the time complexity is dominated by the DP table filling step, also O(m * n).