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,有则减一。