problemscpp
A collection of my answers to algorithm problems in c++.
静态 Public 成员函数 | 所有成员列表
leetcode::maximal_square::Solution类 参考

#include <leetcode.h>

静态 Public 成员函数

static int maximalSquare (vector< vector< char > > &matrix)
 

详细描述

在文件 leetcode.h3094 行定义.

成员函数说明

◆ maximalSquare()

int leetcode::maximal_square::Solution::maximalSquare ( vector< vector< char > > &  matrix)
static

在文件 leetcode.cpp8734 行定义.

8734 {
8735 const int m = matrix.size();
8736 const int n = matrix[0].size();
8737 vector horizontal_next_1s(m, vector(n, 0));
8738 vector vertical_next_1s(m, vector(n, 0));
8739 vector dp(m + 1, vector(n + 1, 0));
8740 for(int i = 0; i < m; i++) {
8741 int cnt = 0;
8742 for(int j = n - 1; j >= 0; j--) {
8743 if(matrix[i][j] == '1') {
8744 cnt++;
8745 } else {
8746 cnt = 0;
8747 }
8748 horizontal_next_1s[i][j] = cnt;
8749 }
8750 }
8751 for(int j = 0; j < n; j++) {
8752 int cnt = 0;
8753 for(int i = m - 1; i >= 0; i--) {
8754 if(matrix[i][j] == '1') {
8755 cnt++;
8756 } else {
8757 cnt = 0;
8758 }
8759 vertical_next_1s[i][j] = cnt;
8760 }
8761 }
8762 int ans = 0;
8763 for(int i = m - 1; i >= 0; i--) {
8764 for(int j = n - 1; j >= 0; j--) {
8765 if(matrix[i][j] == '1') {
8766 dp[i][j] = min(min(vertical_next_1s[i][j], horizontal_next_1s[i][j]), 1 + dp[i + 1][j + 1]);
8767 ans = max(ans, dp[i][j]);
8768 }
8769 }
8770 }
8771 return ans * ans;
8772 }

被这些函数引用 leetcode::maximal_square::TEST().


该类的文档由以下文件生成: