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

    给定一个由 '1'(陆地)和 '0'(水)组成的的二维网格,计算岛屿的数量。一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地连接而成的。你可以假设网格的四个边均被水包围。

    示例 1:

    输入:
    11110
    11010
    11000
    00000

    输出: 1
    示例 2:

    输入:
    11000
    11000
    00100
    00011

    输出: 3

    code:遍历二位数组的每个元素,如果是1,进入渲染函数递归遍历每个元素的上下左右的元素,把它置为2,因为相连的岛屿算是一个岛屿

    class Solution {
    private:
        void numIslandsCore(vector<vector<char>>& tmpGrid,int i,int j,int row,int col)
        {
            if(i<0||i>=row||j<0||j>=col||tmpGrid[i][j]!='1')
                return ;
            
            tmpGrid[i][j]='2';
            numIslandsCore(tmpGrid,i+1,j,row,col);
            numIslandsCore(tmpGrid,i-1,j,row,col);
            numIslandsCore(tmpGrid,i,j+1,row,col);
            numIslandsCore(tmpGrid,i,j-1,row,col);
        }
    public:
        int numIslands(vector<vector<char>>& grid) {
            if(grid.empty()||grid[0].empty())
                return 0;
    
            vector<vector<char>> tmpGrid(grid);
            int row=tmpGrid.size();
            int col=tmpGrid[0].size();
            int res=0;
            for(int i=0;i<row;++i)
            {
                for(int j=0;j<col;++j)
                {
                    if(tmpGrid[i][j]=='1')
                    {
                        ++res;
                        numIslandsCore(tmpGrid,i,j,row,col);
                    }
                }
            }
            return res;
        }
    };
  • 相关阅读:
    Log4j2_java日志使用
    Log4j_java日志使用
    DB_常用知识
    Oracle_内置信息
    Loadrunner使用时IE浏览器打不开怎么办
    性能测试
    python条件语句及循环语句
    计算机网络
    单元测试
    边界条件测试
  • 原文地址:https://www.cnblogs.com/tianzeng/p/12468749.html
Copyright © 2011-2022 走看看