1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
| The idea is simple if we find a 1 we remove all it's neibors recursively. [["1","1","0","0","0"], ["1","1","0","0","0"], ["0","0","1","0","0"], ["0","0","0","1","1"]]
[[0, '1', '0', '0', '0'], ['1', '1', '0', '0', '0'], ['0', '0', '1', '0', '0'], ['0', '0', '0', '1', '1']]
[[0, '1', '0', '0', '0'], [0, '1', '0', '0', '0'], ['0', '0', '1', '0', '0'], ['0', '0', '0', '1', '1']]
[[0, '1', '0', '0', '0'], [0, 0, '0', '0', '0'], ['0', '0', '1', '0', '0'], ['0', '0', '0', '1', '1']]
[[0, 0, '0', '0', '0'], [0, 0, '0', '0', '0'], ['0', '0', '1', '0', '0'], ['0', '0', '0', '1', '1']] done
[[0, 0, '0', '0', '0'], [0, 0, '0', '0', '0'], ['0', '0', 0, '0', '0'], ['0', '0', '0', '1', '1']] done
[[0, 0, '0', '0', '0'], [0, 0, '0', '0', '0'], ['0', '0', 0, '0', '0'], ['0', '0', '0', 0, '1']]
[[0, 0, '0', '0', '0'], [0, 0, '0', '0', '0'], ['0', '0', 0, '0', '0'], ['0', '0', '0', 0, 0]] done
# T:O(nˆ2), S:O(n) class Solution: def numIslands(self, grid: List[List[str]]) -> int: count = 0 for r,row in enumerate(grid): for c,col in enumerate(row): if grid[r][c] == '1': self.removeNeighbors(r,c,grid) print("done") count += 1 return count def removeNeighbors(self, r ,c, grid): grid[r][c] = 0 print(grid) if r+1 < len(grid) and grid[r+1][c] == '1': self.removeNeighbors(r+1,c,grid) if c+1 < len(grid[0]) and grid[r][c+1] == '1': self.removeNeighbors(r,c+1,grid) if r-1 >= 0 and grid[r-1][c] == '1': self.removeNeighbors(r-1,c,grid) if c-1 >= 0 and grid[r][c-1] == '1': self.removeNeighbors(r,c-1,grid)
|