class Solution:
def islandPerimeter(self, grid):
"""
:type grid: List[List[int]]
:rtype: int
"""
m = len(grid)
n = len(grid[0])
L = 0
for i in range(m):
for j in range(n):
u, d, l, r = i - 1, i + 1, j - 1, j + 1
if grid[i][j] == 1:
L += 4
if u >= 0:
if grid[u][j] == 1:
L -= 1
if d < m:
if grid[d][j] == 1:
L -= 1
if l >= 0 :
if grid[i][l] == 1:
L -= 1
if r < n:
if grid[i][r] == 1:
L -= 1
return L
思路:假设没有重合边(算出总周长),然后看每个点的上下左右是否有 1,有则减一。
本文介绍了一种计算二维网格中岛屿周长的算法。通过遍历每个单元格,假设没有重合边计算总周长,然后检查每个点的上下左右是否为陆地,若有则减少共享边的数量。
394

被折叠的 条评论
为什么被折叠?



