Perímetro de la Isla
Este problema consiste en, dada una matriz grid donde 1 representa tierra y 0 agua, regresar el perímetro de la isla. La isla está formada por celdas de tierra conectadas horizontal o verticalmente (sin diagonales) y se garantiza que existe una sola isla.
Solución
class Solution {
public:
int islandPerimeter(vector<vector<int>>& grid) {
int t{0};
for (int i{0}; i < grid.size(); i++) {
for (int j{0}; j < grid[i].size(); j++) {
if (grid[i][j] != 1)
continue;
if (i == 0)
t++;
if (i > 0)
if (grid[i-1][j] == 0)
t++;
if (i == grid.size()-1)
t++;
if (i < grid.size()-1)
if (grid[i+1][j] == 0)
t++;
if (j == 0)
t++;
if (j > 0)
if (grid[i][j-1] == 0)
t++;
if (j == grid[i].size()-1)
t++;
if (j < grid[i].size()-1)
if (grid[i][j+1] == 0)
t++;
}
}
return t;
}
};
Se recorren todas las celdas y, por cada celda de tierra, se revisan sus cuatro lados. Un lado aporta 1 al perímetro si la celda vecina correspondiente es agua o si el lado cae en el borde de la matriz. Sumando los lados expuestos de todas las celdas de tierra se obtiene el perímetro total de la isla.