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

    # 思路
    深度优先遍历
    遍历整个数组,遇到1,ans++,ans是记录岛的个数的
    运行一下dfs函数,把这个岛所有陆地给我沉喽,这个岛全部的1变成0
    等把grid全遍历完,grid就全是0了,再把ans输出,这个ans就是我们记录的岛的个数
    注意:grid竟然是char类型的,所有1和0都要加单引号哦

    代码

    class Solution {
    public:
        void Dfs(vector<vector<char>>&grid,int curr_i,int curr_j)
        {
            //边界条件 超出之后,什么操作都不做
            if(curr_i<0||curr_i==grid.size()||curr_j<0||curr_j==grid[0].size()||grid[curr_i][curr_j]=='0')
            {
                return;
            }
            //进来的点先置为0
            grid[curr_i][curr_j] ='0'; 
            //定义方向数组  上下右左
            int dx[4] = {0,0,1,-1};
            int dy[4] = {1,-1,0,0};
            //查找每个单元格的上下左右进行递归
            for (int index = 0;index<4;index++)
            {
                Dfs(grid,curr_i+dx[index],curr_j+dy[index]);
            }
        }
        int numIslands(vector<vector<char>>& grid) {
        int result = 0;
        //遍历二维数组
        for(int i = 0;i<grid.size();i++)
        {
            for(int j = 0;j<grid[0].size();j++)
            {
                //只要找到有1的点就开始递归找到当前的岛屿
                if(grid[i][j]=='1')
                {
                result++;
                Dfs(grid,i,j);
                }
            }
        }
        return result;
        }
    };
    以大多数人努力程度之低,根本轮不到去拼天赋~
  • 相关阅读:
    几种排序算法比较
    VB 增强的部件与引用
    EXCEL表格常用函数使用的难点
    VBA取得EXCEL表格中的行数和列数
    VB指针 与CopyMemory
    【VB】StrConv函数 vbUnicode用法
    TCP/IP笔记(七)TCP详解
    TCP/IP笔记(六)TCP与UDP
    TCP/IP笔记(四)IP协议
    TCP/IP笔记(三)数据链路层
  • 原文地址:https://www.cnblogs.com/gcter/p/15338549.html
Copyright © 2011-2022 走看看