思路:是1边长+4,判断临近有无1的块,如果有就进行减
需要注意两点:判断方向只需要判断两个方向(横轴和纵轴)就可以了,否则由于相对性会导致一种情况被重复判断。
代码
class Solution {
public int islandPerimeter(int[][] grid) {
//左上-1就行
int res = 0;
int m = grid.length,n = grid[0].length;
for(int i=0;i<m;i++){
for(int j=0;j<n;j++){
if(grid[i][j] == 1){
res += 4;
if(i > 0 && grid[i-1][j] == 1) res-=2;
if(j > 0 && grid[i][j-1] == 1) res-=2;
}
}
}
return res;
}
}