463. 岛屿的周长 - 力扣(LeetCode)
很巧妙的思路:
- 存在一个1就会产生四条边
- 一旦相邻边的数量就会减少2:方格A和方格B相邻,方格A,B需要分别减少一条边
class Solution {
public:
int res = 0;
int islandPerimeter(vector<vector<int>>& grid) {
int n = grid.size(), m = grid[0].size();
for(int i = 0; i < n; ++i){
for(int j = 0; j < m; ++j){
if(grid[i][j] == 1){
res += 4;
//和上面/或者左边相邻
//方格A和方格B相邻,方格A,B需要分别减少一条边
if(i > 0 && grid[i-1][j] == 1) res -= 2;
if(j > 0 && grid[i][j-1] == 1) res -= 2;
}
}
}
return res;
}
};