題目:
分析:
虽然是简单题,自己想的也有点过于复杂,看了题解。
对于单独的格子而言,周长是4,但是当两个格子相邻时,会各自损失1的周长。
所以问题转化为 找出 岛屿格子 之间的 相邻边。
代碼:
class Solution {
public:
int islandPerimeter(vector<vector<int>>& grid) {
int all=0;//1的个数
int n=0;//临边
if(grid.size()==0) return 0;
if(grid[0][0]==1) all++;
for(int i=1;i<grid.size();i++)
{
if(grid[i][0]==1)
{
all++;
if(grid[i-1][0]==1) n++;
}
}
for(int i=1;i<grid[0].size();i++)
{
if(grid[0][i]==1)
{
all++;
if(grid[0][i-1]==1) n++;
}
}
for(int i=1;i<grid.size();i++)
{
for(int j=1;j<grid[0].size();j++)
{
if(grid[i][j]==1)
{
all++;
if(grid[i-1][j]==1) n++;
if(grid[i][j-1]==1) n++;
}
}
}
return all*4-2*n;
}
};