defdfs(row, col):if row <0or col <0or row >= m or col >= n ornot grid[row][col]:return0grid[row][col]=0return dfs(row-1, col)+ \dfs(row+1, col)+ \dfs(row, col-1)+ \dfs(row, col+1)+1ifnot grid:return0m =len(grid)n =len(grid[0])ans =0for i inrange(m):for j inrange(n):if grid[i][j]:ans =max(ans, dfs(i,j))return ans
3. BFS
Leetcode-1162. As Far from Land as Possible
代碼模板
defmaxDistance(grid: List[List[int]])->int:# 從1開始出發(fā)bfs,記錄距離m =len(grid)n =len(grid[0])start =[]# 存入所有起點(diǎn)1的位置for i inrange(m):for j inrange(n):if grid[i][j]:start.append([i,j,0])# 特例ifnot start orlen(start)== m*n:return-1# 四個(gè)方向x =[1,0,-1,0]y =[0,1,0,-1]while start:i, j, dis = start.pop(0)for k inrange(4):row = i + x[k]col = j + y[k]if row <0or col <0or row == m or col == n or grid[row][col]:continuestart.append([row,col,dis+1])grid[row][col]=1#訪問過的位置記錄為1return dis #最后一個(gè)dis