Number of Islands

原题链接Number of Islands

给定一个二位数组,其中’0’代表水,’1’代表土地,判断有多少个孤岛被水隔开。假定二位数组四周都是’0’

思路:

遇到一个’1’就代表肯定有孤岛,然后从这个位置开始将所有相邻的’1’都变为’0’

代码如下

class Solution {
public:int numIslands(vector<vector<char>>& grid) {int n = 0;for(int i = 0; i < grid.size(); ++i){for(int j = 0; j < grid[i].size(); ++j){if(grid[i][j] == '1'){++n;convert_to_zero(grid, i, j);}}}return n;}
private:void convert_to_zero(vector<vector<char>>& grid, int i, int j){if(grid[i][j] == '0')return;grid[i][j] = '0';for(auto& dir : dirs){int row = i + dir[0];int col = j + dir[1];if(row < 0 || row >= grid.size() || col < 0 || col >= grid[row].size())continue;convert_to_zero(grid, row, col);}}static vector<vector<char>> dirs;
};vector<vector<char>> Solution::dirs = { {0, 1}, {1, 0}, {0, -1}, {-1, 0} };

每天一道LeetCode-----给定二维数组代表海域和岛屿,计算有多少个孤岛相关推荐

  1. c#给定二维数组按升序排序_在数组中按升序对数字进行排序| 8086微处理器

    c#给定二维数组按升序排序 Problem: Write a program in 8086 microprocessor to sort numbers in ascending order in ...

  2. C语言求二维数组平均数,一道JavaScript的二维数组求平均数的题

    JavaScript中只支持一维数组,但是可以在数组中嵌套数组来创建二维以至于多维的数组.今天下午在看书时候,发现一道感觉比较有意思的题,就是js中如何求二维数组的列之和和行之和,现在就给大家分享下, ...

  3. 【剑指offer-Java版】03二维数组中的查找

    给定二维数组,和一个整数,二维数组的行从左到右递增,列从上到下递增. 查找该二维数组,看是否有和给定整数相等的值 技巧就是找到一个位于[i][j]的值,通过该值判断给定值可能存在于数组的哪一独立部分 ...

  4. java二维数组的赋值_java二维数组三种初始化方法(实例)

    初始化方法: 1.使用大括号直接赋值,适合已经确定知道数组元素的情况 2.给定二维数组的大小 3.数组第二维的长度可变化,未改变 代码举例如下: public class NewArray { pub ...

  5. java二维数组三种初始化方法(实例)

    初始化方法: 1.使用大括号直接赋值,适合已经确定知道数组元素的情况 2.给定二维数组的大小 3.数组第二维的长度可变化,未改变 代码举例如下: public class NewArray {publ ...

  6. 如何用二维数组输出一个矩形,并求矩形的外围元素之和,主对角线元素之和,副对角线元素之和

    给定二维数组a[4][4] 4行4列#include<stdio.h>const int i=4;const int y =4;int main() {int b;int c;int r ...

  7. 笔试题之反转二维数组

    要求: 输入:[[1,2,3],[4,5,6],[7,8,9]] 输出:[[7,8,9],[4,5,6],[1,2,3]] 给定二维数组反转方法: public int[][] convert (in ...

  8. java二维数组初始化值_Java二维数组初始化的方法

    对于一个新使用的工具,我们会进行初步的初始化工具,目的是为了加上一些使用的配置.在学过了一维数组后,那么二维数组是加了一层维度的一维数组.在初始化方面,二维数组有三种方法,相信很多人只是掌握了其中的一 ...

  9. Java中的二维数组和递归

    文章目录 二维数组 数组初始化以及匿名数组 数组拷贝 Java中数组作为参数传递 递归 二维数组 前面已经学习过数组了,了解到数组就是一种容器,用来存储同一类型值的集合,通过下标 / 索引可以访问数组 ...

最新文章

  1. verilog中如何拆分一个数
  2. 如何在SQL Management Studio中指定其他端口号?
  3. halcon旋转后坐标_基于FPGA的图像旋转设计
  4. Updatepanel与Jquery合用时的问题解决
  5. MPU6050开发 -- 在 C52 单片机上测试
  6. 企业环境中UM的规划设计和配置
  7. 跟我一起考PMP---项目范围管理
  8. ViewPager+Fragment 组合的预加载和懒加载
  9. 如何运用领域驱动设计 - 存储库
  10. Struts2.3.5+Hibernate3+Spring3.1基于注解实现的多文件上传,下载
  11. 怎么彻底移除虚拟机_Parallels Desktop虚拟机怎么完全卸载? PD虚拟机完全卸载方法...
  12. linux的文件系统简单介绍
  13. ecshop Touch笔记
  14. UNIX环境高级编程(中文第三版)
  15. 图片base64解码转换
  16. Matplotlib绘制半圆形
  17. QQ认证空间已升级QQ公众空间,申请地址是?
  18. 【第二章 语言及文法】形式语言与自动机第二章个人总结复习笔记分享!(含文件、持续更新...)
  19. laravel中公共子视图继承实现
  20. 开闭原则、迪米特法则、合成复用原则

热门文章

  1. call和apply和bind的区别
  2. S5P4418/S5P6818核心板EMMC已由原来的4.5版本升级到5.1版本
  3. 数位dp模板 [dp][数位dp]
  4. 爸爸我爱您(之十二)
  5. 开始复习下sql,常用SQL语句示例(一)
  6. VC6++ output :error executing c:\windows\system32\cmd.exe.
  7. ffmpeg 0.8.11 VC编译的SDK已经发布
  8. SqlConnetction类
  9. [Python人工智能] 三.theano实现分类神经网络及机器学习基础
  10. HarmonyOS之常用组件TextField的功能和使用