遍历二维数组中的所有点,对每一个点:
判断对角线元素是否为1,接着判断右边和底边是否为1
class Solution {
public:
void checkMatrix(vector<vector<char>> &v, unsigned int i, unsigned int j, unsigned int rowLength, unsigned int colLength, int &num) {
for (int x = 0; i + x < rowLength && j + x < colLength; ++x) {
if (v[i + x][j + x] == '1') {
for (int y = 0; y < x; ++y) {
if ((v[i + x][j + y] == '1') && (v[i + y][j + x] == '1')) {
continue;
}
else { return; }
}
++num;
}
else { return; }
}
return;
}
int maximalSquare(vector<vector<char>>& matrix) {
if (matrix.empty()) {return 0;}
int MAX = 0;
for (unsigned int i = 0; i < matrix.size(); ++i) {
for (unsigned int j = 0; j < matrix[0].size(); ++j) {
int nums = 0;
checkMatrix(matrix, i, j, matrix.size(), matrix[0].size(), nums);
if (nums > MAX) { MAX = nums; }
}
}
return pow(MAX, 2);
}
};