这题比较好想思路,属于十分钟手撕完毕,注意边界的判断
思路:
遍历所有的格子,如果当前格子为1,判断上下左右,其中只要有一个等于0,周长+1,这是中间格子的情况
当然如果是边界格子,如果行等于第一行,周长+1,行等于最后一行,周长+1,列等于第一列,周长+1,列等于最后一列,周长+1;
class Solution {
public:
int islandPerimeter(vector<vector<int>>& grid) {
int result=0;
for(int i=0;i<grid.size();i++)
{
for(int j=0;j<grid[i].size();j++)
{
if(grid[i][j]==1)
{
if((i-1)>=0&&grid[i-1][j]==0)
{
result+=1;
}
if((i+1)<grid.size()&&grid[i+1][j]==0)
{
result+=1;
}
if((j-1)>=0&&grid[i][j-1]==0)
{
result+=1;
}
if((j+1)<grid[i].size()&&grid[i][j+1]==0)
{
result+=1;
}
if(i==0) result+=1;
if(j==0) result+=1;
if(i==grid.size()-1) result+=1;
if(j==grid[i].size()-1) result+=1;
}
}
}
return result;
}
};