leetcode463 岛屿的周长
通过dfs,判断交界处进行加1
class Solution:
def islandPerimeter(self, grid: List[List[int]]) -> int:
visit=[[0]*len(grid[0]) for _ in range(len(grid))]
def dfs(x,y,count,visit):
if grid[x][y]==0:
count+=1
return count
else:
visit[x][y]=1
for item in [(0,1),(1,0),(-1,0),(0,-1)]:
if x+item[0]>=len(grid) or x+item[0]<0:
count+=1
if y+item[1]>=len(grid[0]) or y+item[1]<0:
count+=1
if 0<=x+item[0]<len(grid) and 0<=y+item[1]<len(grid[0]) and visit[x+item[0]][y+item[1]]!=1 :
count=dfs(x+item[0],y+item[1],count,visit)
return count
for i in range(len(grid)):
for j in range(len(grid[0])):
if grid[i][j]==1:
result=dfs(i,j,0,visit)
return result迭代方法
class Solution:
def islandPerimeter(self, grid: List[List[int]]) -> int:
count=0
for i in range(len(grid)):
for j in range(len(grid[0])):
if grid[i][j]==1:
for item in [(0,1),(1,0),(-1,0),(0,-1)]:
if i+item[0]>=len(grid) or i+item[0]<0:
count+=1
if j+item[1]>=len(grid[0]) or j+item[1]<0:
count+=1
if 0<=i+item[0]<len(grid) and 0<=j+item[1]<len(grid[0]) and grid[i+item[0]][j+item[1]]==0:
count+=1
return count