classSolution(object): defmaximalRectangle(self, matrix): """ :type matrix: List[List[str]] :rtype: int """ m = len(matrix) if m == 0: return0 n = len(matrix[0]) if n == 0: return0 H = [0] * n L = [0] * n R = [n] * n max_area = 0 for i in xrange(m): left = 0 right = n for j in xrange(n): if matrix[i][j] == '1': H[j] += 1 L[j] = max(L[j], left) else: left = j + 1 H[j] = 0 L[j] = 0 R[j] = n for j in xrange(n - 1, -1, -1): if matrix[i][j] == '1': R[j] = min(R[j], right) max_area = max(max_area, H[j] * (R[j] - L[j])) else: right = j return max_area