classSolution:defjudge(self, x:int, y:int)->bool:if(x < n and y < m and x >-1and y >-1):returnTruereturnFalsedefmaxAreaOfIsland(self, grid: List[List[int]])->int:global n,m
if(not grid):return0
m,n =len(grid[0]),len(grid)
self.maxn =0
self.t =0defchange(x:int, y:int)->None:
dist =[[0,-1],[-1,0],[1,0],[0,1]]
grid[x][y]=0
self.t +=1
self.maxn =max(self.maxn,self.t)for i inrange(4):
cur_x = x + dist[i][0]
cur_y = y + dist[i][1]if(self.judge(cur_x,cur_y)and grid[cur_x][cur_y]==1):
change(cur_x, cur_y)returnfor i inrange(n):for j inrange(m):if(grid[i][j]==1):
self.t =0
change(i,j)return self.maxn
130. Surrounded Regions
classSolution:defjudge(self, x:int, y:int)->bool:if(x < n and y < m and x >-1and y >-1):returnTruereturnFalsedefsolve(self, board: List[List[str]])->None:global n,m,boa
if(len(board)==0orlen(board[0])==0):return
m,n =len(board[0]),len(board)defchange(x:int, y:int)->None:
dist =[[0,-1],[-1,0],[1,0],[0,1]]
board[x][y]='1'for i inrange(4):
cur_x = x + dist[i][0]
cur_y = y + dist[i][1]if(self.judge(cur_x,cur_y)and board[cur_x][cur_y]=='O'):
change(cur_x, cur_y)returnfor i inrange(n):if(board[i][0]=='O'):
change(i,0)if(board[i][m-1]=='O'):
change(i,m-1)for i inrange(m):if(board[0][i]=='O'):
change(0,i)if(board[n-1][i]=='O'):
change(n-1,i)for i inrange(n):for j inrange(m):if(board[i][j]=='1'):
board[i][j]='O'else:
board[i][j]='X'
200. Number of Islands
classSolution:defjudge(self, x:int, y:int)->bool:if(x < n and y < m and x >-1and y >-1):returnTruereturnFalsedefnumIslands(self, grid: List[List[str]])->int:global n,m
if(len(grid)==0orlen(grid[0])==0):return0
m,n =len(grid[0]),len(grid)defchange(x:int, y:int)->None:
dist =[[0,-1],[-1,0],[1,0],[0,1]]
grid[x][y]='0'for i inrange(4):
cur_x = x + dist[i][0]
cur_y = y + dist[i][1]if(self.judge(cur_x,cur_y)and grid[cur_x][cur_y]=='1'):
change(cur_x, cur_y)return
num =0for i inrange(n):for j inrange(m):if(grid[i][j]=='1'):
num +=1
change(i,j)return num
[leetcode]130. Surrounded Regions-200. Number of Islands-695. Max Area of Island-举一反三
dfs实现class Solution: def numIslands_sub(self, x:int, y:int): if(x < 0 or x >= self.n or y < 0 or y >= self.m or self.grid[x][y] == "0"): return ...