leetcode 695. Max Área de mayor superficie de la isla Isla de DFS
leetcode 2020 1 pregunta de marzo de golpe diaria
Título: Dada una matriz bidimensional de no nulo número rejilla 0 y 1, es una isla formada de una combinación de cuatro direcciones (horizontal o vertical) 1 (que representan la tierra). Se puede suponer que los cuatro bordes de la matriz de dos dimensiones están rodeadas de agua. Encuentra una matriz bidimensional dado en la isla más grande de la zona. (Si no hay islas, la zona se volvió a 0.)
Ejemplo 1:
[[0,0,1,0,0,0,0,1,0,0,0,0,0],
[0,0,0,0,0,0,0,1,1 , 1,0,0,0],
[0,1,1,0,1,0,0,0,0,0,0,0,0],
[0,1,0,0,1,1 , 0,0,1,0,1,0,0],
[0,1,0,0,1,1,0,0,1,1,1,0,0],
[0,0,0 , 0,0,0,0,0,0,0,1,0,0],
[0,0,0,0,0,0,0,1,1,1,0,0,0],
[0,0,0,0,0,0,0,1,1,0,0,0,0]]
para lo anterior debe devolver la matriz dada 6. Tenga en cuenta que la respuesta no debería ser 11, ya que las islas comprenden sólo cuatro dirección horizontal o vertical es '1'.
Ejemplo 2:
[[0,0,0,0,0,0,0,0]]
Para la matriz dada anteriormente, se devuelve 0.
Nota: La longitud y anchura de la matriz de rejilla dada no es más que 50.
Fuente: Botón de estancia (LeetCode)
enlace: https: //leetcode-cn.com/problems/max-area-of-island
Ideas: Python:primero en profundidad DFS búsqueda.
Detalles: acaba de comenzar tratando el mayor algoritmo de dominio conectado, pero sin éxito. Con el fin de consolidar DFS fueron e hicieron LeetCode 733. Flood Fill
código:
class Solution(object):
def maxAreaOfIsland(self, grid):
"""
:type grid: List[List[int]]
:rtype: int
"""
m, n = len(grid), len(grid[0])
def dfs(gird, i, j):
if 0<=i<m and 0<=j<n and grid[i][j]:
grid[i][j] = 0
return 1 + dfs(grid, i+1,j) + dfs(grid, i-1, j) + dfs(grid, i, j+1) + dfs(grid, i, j-1)
return 0
result = 0
for x in range(m):
for y in range(n):
result = max(result, dfs(grid, x, y))
return result
Este blog es una obra original, dio la bienvenida a la guía, reproduce, por favor indique la fuente, adjuntar un enlace a este artículo, gracias