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;
        }
    };
  • 相关阅读:
    Leetcode 回溯法 典型例题
    LeetCode 回溯法 别人的小结 八皇后 递归
    回溯算法 LEETCODE别人的小结 一八皇后问题
    python学习 面向对象高级编程
    python 学习 面向对象编程
    python 学习 模块
    python 学习 map /reduce
    pyhton 学习 函数式编程
    python学习 函数
    使用dict和set
  • 原文地址:https://www.cnblogs.com/tianzeng/p/12468749.html
Copyright © 2011-2022 走看看