zoukankan      html  css  js  c++  java
  • 岛屿数量

    题目链接:https://leetcode-cn.com/problems/number-of-islands
    题目描述:
    给你一个由 '1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量。
    岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。
    此外,你可以假设该网格的四条边均被水包围。

    示例 1:
    输入:grid = [
    ["1","1","1","1","0"],
    ["1","1","0","1","0"],
    ["1","1","0","0","0"],
    ["0","0","0","0","0"]
    ]
    输出:1

    示例 2:
    输入:grid = [
    ["1","1","0","0","0"],
    ["1","1","0","0","0"],
    ["0","0","1","0","0"],
    ["0","0","0","1","1"]
    ]
    输出:3

    提示:
    m == grid.length
    n == grid[i].length
    1 <= m, n <= 300
    grid[i][j] 的值为 '0' 或 '1'

    题解:

    class Solution {
    public:
        int numIslands(vector<vector<char>>& grid) {
           int ans = 0;
           for(int i = 0; i < grid.size(); i++)
           {
               for(int j = 0; j < grid[0].size(); j++)
               {
                   if(grid[i][j] == '1')
                   {
                       ans++; 
                       dfs(grid, i, j);
                   }
               }
           }
           return ans;
        }
        void dfs(vector<vector<char>>& grid, int r, int c)
        {
            //base 判断是否越界
            if(!isLands(grid, r, c))
                return;
            if(grid[r][c] != '1')
                return;
            //标记已经访问过的点
            grid[r][c] = '2';
            //遍历周围点
            dfs(grid, r - 1, c);
            dfs(grid, r + 1, c);
            dfs(grid, r, c - 1);
            dfs(grid, r, c + 1);
        }
        bool isLands(vector<vector<char>>& grid, int r, int c)
        {
            return (r >= 0 && r < grid.size() && c >= 0 && c <grid[0].size());
        }
    };
    
    
  • 相关阅读:
    JS面向对象的程序设计
    dede 调用自定义图片时新增了很多html结构的解决方法
    dedecms arclist 栏目文章列表调用标签
    POJ 3145 Harmony Forever
    URAL K-based Numbers(1-3)
    POj 3420
    Ural 1004 FLOYD最小环问题
    noip2016提高组总结
    POJ 2566 Bound Found
    POJ 1639度限制生成树
  • 原文地址:https://www.cnblogs.com/ZigHello/p/15368428.html
Copyright © 2011-2022 走看看