题目描述
所有元素遍历常数次,时间复杂度为O(n);
C++ 代码
class Solution {
public:
int islandPerimeter(vector<vector<int>>& grid) {
int n = grid.size(), m = grid[0].size();
int res = 0, cnt = 0, tmp = 0;
int dx[4] = {0, 1, 0, -1}, dy[4] = {1, 0, -1, 0};
for (int i = 0; i < n; i ++)
for (int j = 0; j < m; j ++)
{
if (grid[i][j] == 0) continue;
else
{
cnt ++;
for (int k = 0; k < 4; k ++)
{
int a = i + dx[k], b = j + dy[k];
if (a >= 0 && a < n && b >= 0 && b < m && grid[a][b]) tmp ++;
}
}
}
res = 4 * cnt - tmp;
return res;
}
};