好吧 我承认一开始 输入输出我就么看懂,6是怎么来的,11又是什么?
蓝色部分是答案6,它与红色部分是斜着连在一起的,所以不算答案的一部分,只能是水平或垂直的方向
深度遍历
- 每遍历一个点,就向四周扩散,然后对四周的每个点再遍历,遍历的时候标记一下
四个方向遍历的坐标对应的变化
function dfs(x, y, grid) {
if (x < 0 || y < 0 || x >= grid.length || y >= grid[0].length || grid[x][y] == 0) {
return 0; // 边界的判断
}
grid[x][y] = 0;
let res = 1; // 顺时针遍历四个方向
res += dfs(x, y + 1, grid);
res += dfs(x + 1, y, grid);
res += dfs(x, y - 1, grid);
res += dfs(x - 1, y, grid);
return res;
}
var maxAreaOfIsland = function(grid) {
let res = 0;
let n = grid.length, m = grid[0].length;
for (let i = 0; i < n; i ++) {
for (let j = 0; j < m; j ++) {
res = Math.max(res, dfs(i, j, grid));
}
}
return res;
};
建议二刷!