classSolution: defmaxAreaOfIsland(self,grid):# grid :List[list[int]] maxArea=0 for i,l in enumerate(grid): for j,n in enumerate(l): maxArea=max(self.dfs(grid,i,j),maxArea) return maxArea defdfs(self,grid,cur_i,cur_j): if cur_i<0or cur_j<0or cur_i==len(grid) or cur_j==len(grid[0]) or grid[cur_i][cur_j]!=1: return0 grid[cur_i][cur_j]=0 ans=1 for di,dj in [[0,1],[0,-1],[1,0],[-1,0]]: next_i,next_j = cur_i+di,cur_j+dj ans +=self.dfs(grid,next_i,next_j) return ans
1 2 3 4 5
grid=[[1,0,1,1,0,1,0,1], [1,0,1,1,0,1,1,1], [0,0,0,0,0,0,0,1]] a = Solution() a.maxAreaOfIsland(grid)
classSolution: defmaxAreaOfIsland(self,grid):# grid:List[List[int]] maxArea=0 for i in range(len(grid)): for j in range(len(grid[0])): curArea=0 stack = [(i,j)] while stack: cur_i,cur_j=stack.pop() if cur_i<0or cur_j<0or cur_i==len(grid) or cur_j==len(grid[0]) or grid[cur_i][cur_j]!=1: continue curArea+=1 grid[cur_i][cur_j]=0 for di,dj in [[1,0],[-1,0],[0,1],[0,-1]]: next_i,next_j=cur_i+di,cur_j+dj stack.append((next_i,next_j)) maxArea=max(curArea,maxArea) return maxArea
1 2 3 4 5
grid=[[1,0,1,1,0,1,0,1], [1,0,1,1,0,1,1,1], [0,0,0,0,0,0,0,1]] a = Solution() a.maxAreaOfIsland(grid)