主要是计算边界数量,输入是一个二维数组,输出是不重复边界数量。
方法一、 1.找到二维数组中值为1的点(假设为一个正方形岛屿)
2.然后对正方形的上下左右四个方向做一个判断,水平方向上 分为两种情况:(1)边界条件下,如果这个岛屿是最左或者最右,那么水平方向没有岛屿与之相接,边界+1 ,(2)非边界条件,如果这个岛屿左边或者右边没有岛屿,则边界+1
然后同理计算垂直方向上。
总的思想是将计算边界的问题做了个细化。下面是python代码。
class Solution:
def islandPerimeter(self, grid):
"""
:type grid: List[List[int]]
:rtype: int
"""
sum = 0
row_len = len(grid)
col_len = len(grid[0])
for r in range(row_len):
for c in range(col_len):
if grid[r][c] == 1:
if c-1 < 0 or grid[r][c-1] == 0:
sum += 1
if c+1 >= col_len or grid[r][c+1] == 0:
sum += 1
if r-1 < 0 or grid[r-1][c] == 0:
sum += 1
if r+1 >= row_len or grid[r+1][c] == 0:
sum +=1
return sum
rectangle = [[0,1,0,0], [1,1,1,0],[0,1,0,0],[1,1,0,0]]
ss = Solution()
res = ss.islandPerimeter(rectangle)
print(res)