当前位置: 代码迷 >> 综合 >> LeetCode 463. Island Perimeter
  详细解决方案

LeetCode 463. Island Perimeter

热度:93   发布时间:2024-02-01 07:58:21.0

LeetCode 463

第一个想法是可以通过dfs找到所有的block,然后加上他们的边数(邻居是0或者在最边上),应该也是可以做的。
再考虑这个问题,其实还是可以简化的,因为只有一个island,每个block其实有4个边,如果和他相邻的block也是island的话,他们会有一个共享的边,都是要去掉的(-2)。转换为我们看有多少相邻的属于island的block,我们也不需要dfs,只要遍历整个数组就行。

    def islandPerimeter(self, grid: List[List[int]]) -> int:m, n, count = len(grid), len(grid[0]), 0 for i in range(m):for j in range(n):if grid[i][j] == 1:count +=4if i > 0 and grid[i-1][j] == 1:count -=2if j > 0 and grid[i][j-1] == 1:count -=2return count