Given a 2d grid map of ‘1’s (land) and ‘0’s (water), count the number of islands. An island is surrounded by water and is formed by connecting adjacent lands horizontally or vertically. You may assume all four edges of the grid are all surrounded by water.

Example 1:

11110
11010
11000
00000
Answer: 1

Example 2:

11000
11000
00100
00011
Answer: 3

题目大意:给一个地图,0表示水,1表示陆地,计算陆地的个数

分析:计算连通分量的个数,每次遍历是陆地(grid[x][y] == 1)的区域,dfs中从4个方向遍历,每次将访问过的grid标记为’0’,main函数中进入dfs多少次就表示有多少个岛屿(也就是有多少个连通分量的个数)

class Solution {
public:int numIslands(vector<vector<char>>& grid) {if (grid.size() == 0) return 0;n = grid.size(), m = grid[0].size();for (int x = 0; x < n; x++) {for (int y = 0; y < m; y++) {if (grid[x][y] == '1') {dfs(x, y, grid);cnt++;}}}return cnt;}
private:int n, m, cnt = 0;int arr[5] = {1, 0, -1, 0, 1};void dfs(int x, int y, vector<vector<char>>& grid) {grid[x][y] = '0';for (int i = 0; i < 4; i++) {int tx = x + arr[i], ty = y + arr[i+1];if (tx >= 0 && tx < n && ty >= 0 && ty < m && grid[tx][ty] == '1')dfs(tx, ty, grid);}}
};

LeetCode 200. Number of Islands相关推荐

  1. [LeetCode.200]Number of Islands

    问题描述 Given a 2d grid map of '1's (land) and '0's (water), count the number of islands. An island is ...

  2. leetcode 200. Number of Islands | 200. 岛屿数量(Java)

    题目 https://leetcode-cn.com/problems/number-of-islands/ 题解 class Solution {public int numIslands(char ...

  3. LeetCode 200. Number of Islands--c++ dfs解法

    LeetCode 200. Number of Islands LeetCode题解专栏:LeetCode题解 LeetCode 所有题目总结:LeetCode 所有题目总结 大部分题目C++,Pyt ...

  4. 200. Number of Islands**(岛屿数量)

    200. Number of Islands**(岛屿数量) https://leetcode.com/problems/number-of-islands/ 题目描述 Given an m x n ...

  5. 200.Number of Islands

    /** 200.Number of Islands * 2016-4-3 by Mingyang* union 什么:两个相邻的1元素* union 目的:union后计数union集合数量(通过计数 ...

  6. 【Leetcode】Number of Islands

    题目链接:https://leetcode.com/problems/number-of-islands/ 题目: Given a 2d grid map of '1's (land) and '0' ...

  7. 【LeetCode 剑指offer刷题】回溯法与暴力枚举法题6:Number of Islands

    [LeetCode & 剑指offer 刷题笔记]目录(持续更新中...) Number of Islands Given a 2d grid map of '1's (land) and ' ...

  8. 岛屿的个数java_LeetCode 200:岛屿数量 Number of Islands

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

  9. 305. Number of Islands II

    305. Number of Islands II 方法1: Union Find 易错点: Complexity 方法2: dfs Complexity A 2d grid map of m row ...

最新文章

  1. linux java编译后生成文件_Linux终端编译并执行Java文件
  2. RabbitMq+Haproxy负载均衡
  3. 用PHP写一个最简单的解释器Part1
  4. 年轻的程序员怎么快速成为架构师?
  5. 分布式设计模式中的Quorum思想
  6. 好东西真多,如何让自己学的能跟上技术的发展呢
  7. linq判断集合中相同元素个数_高中数学:集合与函数概念知识点汇总
  8. session过期删除php,session过期怎么恢复?
  9. 快速的APK厂商快速和免费的Andr​​oid应用程序生成器无需编码技巧
  10. QQ象棋java通用版下载_QQ中国象棋
  11. php底部漂浮广告位代码,网站顶部底部(上下)悬浮(漂浮)广告位代码
  12. 组织架构与中台建设,回顾阿里小米京东美团四大商业巨头的战略变迁
  13. 面试测试工程师遇到的面试题——非技术方面
  14. 你想要的宏基因组-微生物组知识全在这(2020.7)
  15. 禅修内观 | 一个璀璨的思想成就
  16. 【开发日常】【Makefile】编译时如何将警告(warning)视为错误(error)?
  17. 网易企业邮箱注册后,管理员怎么管理邮箱?
  18. Android第三方视频加载框架JCVideoPlayer
  19. [暑假]解决:开发分支拉错问题,比如我们在master修改成feature
  20. mybatis高级操作及源码分析(一)

热门文章

  1. Android 多种跑马灯的方法
  2. 关闭selinux服务
  3. 可视化分析:洞见数据的秘诀
  4. postgresql 用户安全配置
  5. 使用Dom4j进行XML解析
  6. CentOS6.5+mysql5.1源码安装过程
  7. FastDFS存储服务器部署
  8. 实验3 OpenGL几何变换
  9. Head first 第一章
  10. [转载] 七龙珠第一部——第021话 克林危险