题目地址:https://leetcode.com/problems/island-perimeter/#/description
简单理解:
题目大概就是给出一个0 1矩阵作为输入,其中1表示一个正方形,表示一块陆地。我们要做的就是计算这块陆地的周长.即上图中黄色线段的数量.
我的解法:
1. 思路挺简单,就是通过计算矩阵中为1的元素个数sumOne(表示正方形个数)以及每个为1的元素的上下左右四个元素的和repeat(表示一个正方形和其他正方形公用的变的数量),最后的周长可以表示为sumOne*4-repeat。代码如下:
class Solution {
public:
int islandPerimeter(vector<vector<int> > grid) {
int sumOne = 0;
int repeat = 0;
for(int i = 0;i<grid.size();i++){
for(int j = 0;j<grid[i].size();j++){
if(grid[i][j] == 1)
{
sumOne++;
repeat += (i==grid.size()-1?0:grid[i+1][j]) + (j==grid[i].size()-1?0:grid[i][j+1]);
repeat += (i-1<0?0:grid[i-1][j]);
repeat += (j-1<0?0:grid[i][j-1]);
}
}
}
return 4*sumOne - repeat;
}
};