Leetcode200. 岛屿数量(JAVAdfs)
Posted !0 !
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Leetcode200. 岛屿数量(JAVAdfs)相关的知识,希望对你有一定的参考价值。
题目链接:https://leetcode-cn.com/problems/number-of-islands/
解题思路
我们遍历每个点,以每个点为中心,向上下左右四个方向扩展,如果到边界,或者当前位置不等于1时就返回。我们把所有遍历过的点都会置为0,表示已经遍历过。
代码
class Solution {
public int numIslands(char[][] grid) {
int ans = 0;
for(int i = 0; i < grid.length; i++) //遍历二维数组每个点
for(int j = 0; j < grid[0].length; j++)
if(dfs(grid, i, j)) //如果当前点为1返回true
ans++;
return ans;
}
boolean dfs(char[][] grid, int i, int j) {
if(i < 0 || i >= grid.length || j < 0 || j >= grid[0].length || grid[i][j] != '1') //出边界或者当前位置不为1则返回
return false;
grid[i][j] = '0'; //遍历过的点置为0
dfs(grid, i + 1, j); //遍历左边
dfs(grid, i - 1, j); //遍历右边
dfs(grid, i, j + 1); //遍历上面
dfs(grid, i, j - 1); //遍历下面
return true;
}
}
复杂度分析
- 时间复杂度: O ( n ∗ m ) O(n * m) O(n∗m)
- 空间复杂度: O ( n ∗ m ) O(n * m) O(n∗m)
以上是关于Leetcode200. 岛屿数量(JAVAdfs)的主要内容,如果未能解决你的问题,请参考以下文章