如何把岛屿问题中的大岛屿保留而小岛屿的值变成零
时间: 2024-04-08 19:34:25 浏览: 11
对于岛屿问题,您可以使用深度优先搜索(DFS)或广度优先搜索(BFS)算法来遍历地图上的每个点。当遍历到一个岛屿上的点时,您可以将其标记为已访问,并继续搜索与其相邻的未访问点。通过这种方式,您可以找到所有属于同一个岛屿的点。
一旦您找到了一个岛屿,您可以通过遍历该岛屿上的每个点,并将其值设置为零来将其变为小岛屿。
以下是一个示例代码,演示如何实现这个过程:
```python
def dfs(grid, i, j):
if i < 0 or i >= len(grid) or j < 0 or j >= len(grid[0]) or grid[i][j] == 0:
return
grid[i][j] = 0
dfs(grid, i+1, j)
dfs(grid, i-1, j)
dfs(grid, i, j+1)
dfs(grid, i, j-1)
def removeSmallIslands(grid):
for i in range(len(grid)):
for j in range(len(grid[0])):
if grid[i][j] == 1:
dfs(grid, i, j)
grid = [
[1, 1, 0, 0, 0],
[1, 1, 0, 0, 0],
[0, 0, 1, 0, 0],
[0, 0, 0, 1, 1]
]
removeSmallIslands(grid)
print(grid)
```
上述代码中,我们使用了DFS算法来标记和移除小岛屿。通过调用`removeSmallIslands`函数,我们可以将小岛屿的值变为零,而保留大岛屿。
希望这个例子对您有帮助!如果您有任何其他问题,请随时提问。