栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

leetcode1020. 飞地的数量(mid)

leetcode1020. 飞地的数量(mid)

飞地的数量

代码(dfs)
力扣链接

代码(dfs)
class Solution {
    int m;
    int n;
    boolean[][] visited;
    static final int[][] DIRS = new int[][]{{0,1},{0,-1},{-1,0},{1,0}};

    public int numEnclaves(int[][] grid) {
        m = grid.length;
        n = grid[0].length;
        visited = new boolean[m][n];
        //从所有和网格边界相邻的陆地格出发,最后遍历所有陆地格,如果未被访问过,则说明其是飞地
        for (int i = 0; i < m; ++i) {
            dfs(grid, i, 0);
            dfs(grid, i, n - 1);
        }

        for (int i = 1; i < n - 1; ++i) {
            dfs(grid, 0, i);
            dfs(grid, m - 1, i);
        }

        int res = 0;
        //记录飞地数量
        for (int i = 0; i < m; i++) {
            for (int j = 0; j < n; j++) {
                if (!visited[i][j] && grid[i][j] == 1) {
                    ++res;
                }
            }
        }
        return res;
    }

    void dfs(int[][] grid, int i, int j) {
        if (i >= 0 && i < m && j >= 0 && j < n && grid[i][j] == 1 && !visited[i][j]) {
            visited[i][j] = true;
            for (int[] dir : DIRS) {
                int x = i + dir[0];
                int y = j + dir[1];
                dfs(grid, x, y);
            }
        }
    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/734288.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号