https://leetcode.com/problems/island-perimeter/description/
题目:求岛屿的周长
思路:方格数量*4-相邻边
class Solution {
public:
int islandPerimeter(vector<vector<int>>& grid) {
int sum=0,sum1=0;
int dir[4][2]={-1,0,1,0,0,-1,0,1};
for(int x=0;x<grid.size();x++){
for(int y=0;y<grid[x].size();y++){
sum1+=grid[x][y];
if(grid[x][y]){
for(int x1=0;x1<4;x1++){
if(x+dir[x1][0]>=0&&x+dir[x1][0]<grid.size()&&y+dir[x1][1]>=0&&y+dir[x1][1]<grid[x].size())
sum+=grid[x+dir[x1][0]][y+dir[x1][1]];
}
}
}
}
return sum1*4-sum;
}
};
优化一下
class Solution {
public:
int islandPerimeter(vector<vector<int>>& grid) {
int sum=0;
for(int x=0;x<grid.size();x++){
for(int y=0;y<grid[x].size();y++){
sum+=grid[x][y]*4;
if(x>0&&grid[x-1][y]&&grid[x][y]) sum-=2;
if(y>0&&grid[x][y-1]&&grid[x][y]) sum-=2;
}
}
return sum;
}
};