// 思路一:遍历法
var largest1BorderedSquare = function (grid) {
var rows = grid.length, cols = grid[0].length;
var l = Math.min(rows, cols);
for (; l > 0; l--) {
for (var i = 0; i < rows; i++) {
if (i + l - 1 >= rows) break;
for (var j = 0; j < cols; j++) {
if (j + l - 1 >= cols) break;
for (var n = 0; n < l; n++) {
// 判断圈定的正方形的四边是否都是1
if (grid[i][j + n] != 1) break;
if (grid[i + l - 1][j + n] != 1) break;
if (grid[i + n][j] != 1) break;
if (grid[i + n][j + l - 1] != 1) break;
}
if (n == l) return l * l;
}
}
}
return 0;
};
// 思路二,待补充
习题
思路
思路一:从最大的正方形开始,判断正方形的四边是否都是1,如果不是,逐步将正方形缩小,并在整个大矩阵中从左上往右下移动,遇到四边都为1的情况,该正方形的大小则为结果
思路二:动态规划,类似题目都可以用动态规划解决
解答