J'ai ce code Python qui compte le nombre d'îlots (groupés 1) dans une matrice binaire. Comment est-ce que je modifierais cela pour tenir compte de l'emballage en haut et en bas?Nombre d'îles dans la matrice binaire (avec emballage)
class Solution(object):
rowLen = None
colLen = None
def numIslands(self, grid):
"""
:type grid: List[List[str]]
:rtype: int
"""
self.rowLen = len(grid)
if self.rowLen == 0:
return 0;
self.colLen = len(grid[0])
count = 0;
for row in range(self.rowLen):
for col in range(self.colLen):
if grid[row][col] == '1':
count += 1
self.search(grid, row, col)
return count
def search(self, grid, row, col):
if (row >= 0 and col >= 0 and row < self.rowLen and col < self.colLen and grid[row][col] == '1'):
grid[row][col] = 0;
self.search(grid, row - 1, col)
self.search(grid, row + 1, col)
self.search(grid, row, col - 1)
self.search(grid, row, col + 1)
Cela renvoie actuellement un nombre de 2, mais devrait revenir 1 l'île en bas à droite devrait être considéré comme faisant partie de la plus grande île après emballage avec le numéro en bas à gauche.
11110
11010
11000
10001
Vous devriez peut-être rechercher des composants connectés –
@ReblochonMasque composants connectés signifierait l'inférieur droit serait une île séparée –
Pas nécessairement; Cela dépend de la structure de données que vous utilisez. –