一. 题目
-
题目
-
示例
二. 方法一
-
解题思路
分析可知:周长的长度 = 每个元素1四周不是1(0 或边界)的个数之和 = 4 * 元素1的个数 - 周围是1的个数
此方法使用的是:周长的长度 = 4 * 元素1的个数 - 周围是1的个数
-
解题代码
def islandPerimeter(self, grid: List[List[int]]) -> int: row = len(grid) col = len(grid[0]) count = 0 size = 0 for r in range(row): for c in range(col): if grid[r][c] == 1: size += 1 if r >= 1 and grid[r - 1][c] == 1: count += 1 if c >= 1 and grid[r][c - 1] == 1: count += 1 if c < col - 1 and grid[r][c + 1] == 1: count += 1 if r < row - 1 and grid[r + 1][c] == 1: count += 1 result = 4 * size - count return result
-
分析
时间复杂度: O(m * n)
空间复杂度: O(1)
三. 方法二
-
解题思路
分析可知:周长的长度 = 每个元素1四周不是1(0 或边界)的个数之和 = 4 * 元素1的个数 - 周围是1的个数
此方法使用的是:周长的长度 = 每个元素1四周不是1(0 或边界)的个数之和
-
解题代码
def islandPerimeter(self, grid: List[List[int]]) -> int: row = len(grid) col = len(grid[0]) count = 0 for r in range(row): for c in range(col): if grid[r][c] == 1: if r < 1 or grid[r - 1][c] == 0: count += 1 if c < 1 or grid[r][c - 1] == 0: count += 1 if c >= col - 1 or grid[r][c + 1] == 0: count += 1 if r >= row - 1 or grid[r + 1][c] == 0: count += 1 return count
-
分析
时间复杂度: O(m * n)
空间复杂度: O(1)