不需要光度搜索和深度搜索,只是普通的数学问题,周长是岛屿陆地数量*4-相邻边数*2,这里遍历时计算上边和左边是否相邻陆地,不统计下边和右边是为了防止重复计算
class Solution {
public:
int islandPerimeter(vector<vector<int>>& grid) {
int sum=0;//统计陆地个数
int cover=0;//统计相邻陆地个数
int m=grid.size(),n=grid[0].size();
for(int i=0;i<m;i++)
for(int j=0;j<n;j++)
if(grid[i][j]){
sum++;
if(i>0&&grid[i-1][j])
cover++;
if(j>0&&grid[i][j-1])
cover++;
}
return sum*4-cover*2;
}
};