Problem: 463. 岛屿的周长
思路
本题还是比较好写,一个岛屿的周长为4,如果一个岛屿周边有相邻的岛屿,那么减去相邻的岛屿的数量,再将减去后的周长加到结果集中就可以了。
复杂度
时间复杂度:
添加时间复杂度, 示例: $O(n)$
空间复杂度:
添加空间复杂度, 示例: $O(n)$
Code
[]1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| class Solution { public: int islandPerimeter(vector<vector<int>>& grid) { int res = 0; for (int i = 0; i < grid.size(); i++) { for (int j = 0; j < grid[0].size(); j++) { if (grid[i][j] == 1) { int temp = 4; pair<int, int> neigbors[4]{ pair<int, int>(i, j + 1), pair<int, int>(i + 1, j), pair<int, int>(i, j - 1), pair<int, int>(i - 1, j)}; for(auto& neigbor : neigbors) { if (neigbor.first >= grid.size() || neigbor.second >= grid[0].size() || neigbor.first < 0 || neigbor.second < 0) continue; if (grid[neigbor.first][neigbor.second] == 1) { temp -= 1; } } res += temp; } } } return res; } };
|