https://www.cnblogs.com/grandyang/p/4550604.html 解法3
class Solution {public: int maximalSquare(vector>& matrix) { if(matrix.empty()) return 0; if(matrix[0].empty()) return 0; int res = 0; vector > area(matrix.size(),vector (matrix[0].size(),0)); for(int i = 0;i < matrix.size();i++){ for(int j = 0;j < matrix[0].size();j++){ if(i == 0 || j == 0) area[i][j] = matrix[i][j] - '0'; else if(matrix[i][j] == '1') area[i][j] = min(area[i-1][j-1],min(area[i-1][j],area[i][j-1])) + 1; res = max(res,area[i][j]); } } return res*res; }};