463. Island Perimeter

文章目录
  1. 1. 题目
  2. 2. 思路

题目

https://leetcode.com/problems/island-perimeter/

思路

这道题本来看得我头大,但是具象化之后就很好理解了。当然,好理解不意味着好做。我用的是最简单的算法,只计算了在边界的陆地数量,是边界陆地则周长+1。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class Solution(object):
def islandPerimeter(self, grid):
"""
:type grid: List[List[int]]
:rtype: int
"""
row= len(grid)
col= len(grid[0])
res=0
for i in range(row):
for j in range(col):
if grid[i][j]==1:
for x, y in [[-1, 0], [1, 0], [0, -1], [0, 1]]:
tmp_i, tmp_j = i + x, j + y
if not (0 <= tmp_i < row and 0 <= tmp_j < col) or grid[tmp_i][tmp_j] == 0:
res += 1
return res

还有按行扫描的但是我实在是太困了,好像没有本质区别,下次做到这道题时候再总结吧。