题目
思路
指定边界规则:小心点是避免重复
对于任何一个点应该是判断四个方向:
为0,有一条
越界,有一条
代码
class Solution {
public:
int islandPerimeter(vector<vector<int>>& grid) {
int row = grid.size();
if(!row)
return 0;
int col = grid[0].size();
if(!col)
return 0;
int ret = 0;
for( int i = 0; i < row; ++i )
{
for( int j = 0; j < col; ++j )
{
if( grid[i][j] == 1 )
{
//(i-1,j)
if(i-1 < 0) ++ret;
else if( grid[i-1][j] == 0 ) ++ ret;
//(i+1,j)
if( i+1 == row ) ++ ret;
else if( grid[i+1][j] == 0 ) ++ret;
//(i,j-1)
if(j-1 < 0) ++ret;
else if(grid[i][j-1] == 0) ++ret;
//(i,j+1)
if(j+1 == col) ++ret;
else if( grid[i][j+1] == 0 ) ++ret;
}
}
}
return ret;
}
};