leetcodeSolution to some Leetcode problems written in C++ |
git clone git://git.dimitrijedobrota.com/leetcode.git |
Log | Files | Refs | README | LICENSE |
1139.cpp (922B)
0 class Solution {
1 public:
2 int largest1BorderedSquare(vector<vector<int>> &grid) {
3 static int top[101][101], left[101][101];
4 const int n = size(grid), m = size(grid[0]);
6 for (int i = 1; i <= n; i++) {
7 for (int j = 1; j <= m; j++) {
8 left[i][j] = grid[i - 1][j - 1] ? left[i][j - 1] + 1 : 0;
9 top[i][j] = grid[i - 1][j - 1] ? top[i - 1][j] + 1 : 0;
10 }
11 }
13 for (int s = min(m, n); s > 0; s--) {
14 for (int i = 0; i <= n - s; i++) {
15 for (int j = 0; j <= m - s; j++) {
16 if (top[i + s][j + 1] < s) continue;
17 if (top[i + s][j + s] < s) continue;
18 if (left[i + 1][j + s] < s) continue;
19 if (left[i + s][j + s] < s) continue;
20 return s * s;
21 }
22 }
23 }
25 return 0;
26 }
27 };