leetcode刷到这道题:

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

示例 1:

输入:
11110
11010
11000
00000

输出: 1

示例 2:

输入:
11000
11000
00100
00011

输出: 3

开始一直没思路,后来看别人的思路,发现就是求连通集的数目。然后发现已经把DFS、BFS怎么写忘光了。其实是想说,老师有教怎么写,我只是把老师的教法忘光了,看了一下以前的代码,拢了拢思路,决定管它的BFS、DFS、Prime、Dijsktra...自己写好了于是就根据DFS的思路开始解这道题,从任意一个点开始搜,如果相邻的点为1且没有被访问过,就用递归接着这个点搜,一直搜到相邻点不为1或者已经被访问过为止第一轮搜索完了,看剩下的点有没有值为1且没有被访问过,有的话用第一轮的思路接着搜。就搜完了。代码如下:
class Solution {
public:
    void DFS(vector< vector<char> >& grid, vector< vector<int> >& visited, int i, int j){
         && grid[i-][j] == ][j] == ){
            visited[i-][j] = ;
            DFS(grid, visited, i-, j);
        }
         && grid[i][j-] == ] == ){
            visited[i][j-] = ;
            DFS(grid, visited, i, j-);
        }
        ].size();
         && grid[i+][j] == ][j] == ){
            visited[i+][j] = ;
            DFS(grid, visited, i+, j);
        }
         && grid[i][j+] == ] == ){
            visited[i][j+] = ;
            DFS(grid, visited, i, j+);
        }
    }
    int numIslands(vector< vector<char> >& grid) {
        int n1 = grid.size();
        ) ;
        ].size();
        ) ;
        vector< vector<));
        ;
        ;i<n1;i++){
            ;j<n2;j++){
                ' && not visited[i][j]){
                    num++;
                    DFS(grid, visited, i, j);
                }
            }
        }
        return num;
    }
};

DFS不怂之《leetcode-岛屿的个数》的更多相关文章

  1. leetcode 岛屿的个数 python

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

  2. [LeetCode] Number of Distinct Islands II 不同岛屿的个数之二

    Given a non-empty 2D array grid of 0's and 1's, an island is a group of 1's (representing land) conn ...

  3. [LeetCode] Number of Distinct Islands 不同岛屿的个数

    Given a non-empty 2D array grid of 0's and 1's, an island is a group of 1's (representing land) conn ...

  4. [LeetCode] 711. Number of Distinct Islands II 不同岛屿的个数之二

    Given a non-empty 2D array grid of 0's and 1's, an island is a group of 1's (representing land) conn ...

  5. [LeetCode] 694. Number of Distinct Islands 不同岛屿的个数

    Given a non-empty 2D array grid of 0's and 1's, an island is a group of 1's (representing land) conn ...

  6. lintcode:Number of Islands 岛屿的个数

    题目: 岛屿的个数 给一个01矩阵,求不同的岛屿的个数. 0代表海,1代表岛,如果两个1相邻,那么这两个1属于同一个岛.我们只考虑上下左右为相邻. 样例 在矩阵: [ [1, 1, 0, 0, 0], ...

  7. 岛屿的个数12 · Number of Islands12

    [抄题]: 给一个01矩阵,求不同的岛屿的个数. 0代表海,1代表岛,如果两个1相邻,那么这两个1属于同一个岛.我们只考虑上下左右为相邻. [ [1, 1, 0, 0, 0], [0, 1, 0, 0 ...

  8. lintcode433 岛屿的个数

    岛屿的个数 给一个01矩阵,求不同的岛屿的个数. 0代表海,1代表岛,如果两个1相邻,那么这两个1属于同一个岛.我们只考虑上下左右为相邻. 您在真实的面试中是否遇到过这个题? Yes 样例 在矩阵: ...

  9. LeetCode200 岛屿的个数

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

  10. LeetCode 628. 三个数的最大乘积

    题目描述 LeetCode 628. 三个数的最大乘积 给定一个整型数组,在数组中找出由三个数组成的最大乘积,并输出这个乘积. 示例1 输入: [1,2,3] 输出: 6 示例2 输入: [1,2,3 ...

随机推荐

  1. CentOS上手工部署kubernetes集群

    本文完全是根据二进制部署kubernets集群的所有步骤,同时开启了集群的TLS安全认证. 环境说明 在下面的步骤中,我们将在三台CentOS系统的物理机上部署具有三个节点的kubernetes1.7 ...

  2. Docker记录-Docker部署记录

    1.Docker介绍 Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源. Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后 ...

  3. HDU 1021(斐波那契数与因子3 **)

    题意是说在给定的一种满足每一项等于前两项之和的数列中,判断第 n 项的数字是否为 3 的倍数. 斐波那契数在到第四十多位的时候就会超出 int 存储范围,但是题目问的是是否为 3 的倍数,也就是模 3 ...

  4. Shell编程(六)awk工具

    1. {print} coins.txt gold USA American Eagle gold Austria Franz Josef Korona silver USA ingot gold S ...

  5. Structured Streaming Programming Guide结构化流编程指南

    目录 Overview Quick Example Programming Model Basic Concepts Handling Event-time and Late Data Fault T ...

  6. Terminal 快捷键帮助

    Terminal 快捷键帮助 Terminal 快捷键帮助 移动光标至行首 CTRL+A 第一次按时,移动光标至行首: 再次按时,回到原有位置 CTRL+X 移动光标至行尾 CTRL+E 光标向左移动 ...

  7. threading.local学习

    多线程抢占问题 import time import threading obj = 5 def task(arg): global obj obj = arg time.sleep(1) print ...

  8. vue.cli 中使用 less 来写css样式

    vue-cli 的webpack中已配置了less,但 package.json 中没有选项,为了方便开发中使用,需安装一下: 安装方式一: npm install less less-loader ...

  9. Javaweb学习笔记——(二十)——————Javaweb监听器、国际化

    Javaweb监听器     三大组件         *Servlet         *Listener         *Filter Listener:监听器         1.初次相见:A ...

  10. 10个免费的javascript富文本编辑器(jQuery and non-jQuery)

    祝愿园子里的朋友圣诞节快乐. 本文介绍了10个免费易用富文本编辑器(rich text editors,RTE),其中5个是Jquery插件,另外5个是非Jquery富文本编辑器 简介 Javascr ...