题目描述
https://leetcode-cn.com/problems/island-perimeter/
思路题解
注意在类里面全局变量的使用。这里使用了self.c。如果用global,必须先赋值才可以。python3全局变量的使用经验总结
class Solution:
def islandPerimeter(self, grid: List[List[int]]) -> int:
self.c=0
def is_edge(grid,i,j):
if i<0 or j<0 or i>=len(grid) or j>=len(grid[0]) or grid[i][j]==0:return 1
return 0
def dfs(grid,i,j):
if i<0 or j<0 or i>=len(grid) or j>=len(grid[0]) or grid[i][j]==0 or grid[i][j]==2:return
# global c
self.c+=is_edge(grid,i-1,j)
self.c+=is_edge(grid,i,j+1)
self.c+=is_edge(grid,i+1,j)
self.c+=is_edge(grid,i,j-1)
grid[i][j]=2
print(i,j,self.c)
dfs(grid,i-1,j)
dfs(grid,i,j+1)
dfs(grid,i+1,j)
dfs(grid,i,j-1)
for i in range(len(grid)):
for j in range(len(grid[0])):
if grid[i][j]==1:
dfs(grid,i,j)
return self.c