Задача
Дана бинарная матрица. Верните максимальную площадь острова (связанных по горизонтали/вертикали единиц).
Примеры
Пример 1
Input: grid = [[0,0,1,0,0,0,0,1,0,0,0,0,0],[0,0,0,0,0,0,0,1,1,1,0,0,0],[0,1,1,0,1,0,0,0,0,0,0,0,0],[0,1,0,0,1,1,0,0,1,0,1,0,0],[0,1,0,0,1,1,0,0,1,1,1,0,0],[0,0,0,0,0,0,0,0,0,0,1,0,0],[0,0,0,0,0,0,0,1,1,1,0,0,0],[0,0,0,0,0,0,0,1,1,0,0,0,0]]
Output: 6
Пояснение
Ответ не 11, потому что остров должен быть связан по 4 направлениям.
Пример 2
Input: grid = [[0,0,0,0,0,0,0,0]]
Output: 0
Решение
Решение
var maxAreaOfIsland = function(grid) { if (grid.length === 1 && grid[0].length === 1) return grid[0][0]; const rows = grid.length; const cols = grid[0].length; function getIsland(r, c) { if (r < 0 || c < 0 || r >= rows || c >= cols || grid[r][c] === 0) return 0; grid[r][c] = 0; return 1 + getIsland(r - 1, c) + getIsland(r + 1, c) + getIsland(r, c - 1) + getIsland(r, c + 1); } let maxIsland = 0; for (let r = 0; r < rows; r++) { for (let c = 0; c < cols; c++) { const cell = grid[r][c]; if (cell === 1) { const island = getIsland(r, c); maxIsland = Math.max(maxIsland, island); } } } return maxIsland; };