public class FindMaxSquare {
public int solution(int[][] board) {
int max = 0, cnt = 0;
if (board.length <= 2 && board[0].length <= 2) {
for (int[] b : board) {
for (int ele : b) {
if (ele == 1) {
cnt++;
}
}
}
return cnt == 4 ? 4 : 1;
}
for (int i = 1; i < board.length; i++) {
for (int j = 1; j < board[0].length; j++) {
if (board[i][j] == 1) {
board[i][j] = Math.min(board[i - 1][j], Math.min(board[i][j - 1], board[i - 1][j - 1])) + 1;
max = max < board[i][j] ? board[i][j] : max;
}
}
}
return max * max;
}
}