(BFS/DFS) leetcode 200. Number of Islands
时间:2019-04-15
本文章向大家介绍(BFS/DFS) leetcode 200. Number of Islands,主要包括(BFS/DFS) 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 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:
Input: 11110 11010 11000 00000 Output: 1
Example 2:
Input: 11000 11000 00100 00011 Output: 3
-----------------------------------------------------------------------------------------------------------------------------------------
顾名思义,就是求岛屿的个数,此题可以用bfs,也可以用dfs求解,相对来说,用dfs写代码会更简单,但是这个题我用bfs。
这个题用bfs时,不必新设立vis来判断是否访问过,可以把访问到的‘1’的字符中,把这个字符改为'0'就可以。
C++代码:
class Solution { public: int numIslands(vector<vector<char>>& grid) { typedef pair<int,int> pii; queue<pii> q; int x = 0,y = 0,xx = 0,yy = 0; int dx[] = {1,-1,0,0}; int dy[] = {0,0,1,-1}; int row = grid.size(); int col; int sum = 0; if(row > 0){ col = grid[0].size(); } else{ col = 0; } if(row == 0 || col == 0){ return 0; } for(int i = 0; i < row; i++){ for(int j = 0; j < col; j++){ if(grid[i][j] == '1'){ grid[i][j] == '0'; q.push(pii(i,j)); while(!q.empty()){ x = q.front().first; y = q.front().second; q.pop(); for(int i = 0; i < 4; i++){ xx = x + dx[i]; yy = y + dy[i]; if(xx >= 0 && xx < row && yy >= 0 && yy < col && grid[xx][yy] == '1'){ grid[xx][yy] = '0'; q.push(pii(xx,yy)); } } } sum++; } } } return sum; } };
- 【Scikit-Learn 中文文档】概率校准 - 监督学习 - 用户指南 | ApacheCN
- ASP.NET MVC路由扩展:链接和URL的生成
- .NET Core采用的全新配置系统[10]: 配置的同步机制是如何实现的?
- C+实现神经网络之贰—前向传播和反向传播
- 通过重建Hosting系统理解HTTP请求在ASP.NET Core管道中的处理流程[上]:采用管道处理请求
- 2017奇葩机器人大盘点:一言不合让你变瞎
- 【机器学习实战】第14章 利用SVD简化数据
- 异步数据存储声明
- 区块链学堂——公有链、私有链、联盟链、侧链、互联链
- 人工智能将让我们更擅长辩论
- ASP.NET路由系统实现原理:HttpHandler的动态映射
- 腾讯、卓健科技、恩泽医疗合力打造“互联网+智慧医院”
- 区块链,不是比特币(1)
- 小程序缓存 删不删你都该知道的事儿
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 【CS学习笔记】17、登录验证的难点
- CS学习笔记 | 18、密码哈希散列设置信任
- CS学习笔记 | 19、代码执行的方式
- chrome 插件通信DEOM
- rust 模块组织结构
- PCIe例程理解(一)用户逻辑模块(接收)仿真分析
- 细品服务并发限流+Redis-cell的使用
- 在VCUTRD 2020.1 里设置HDMI-TX显示QT界面
- 稀疏数组 & 环形队列
- Spring+Mybatis+Atomikos实现分布式事务
- Android低功耗蓝牙总结
- 【云原生技术研究】 从bpftrace看如何利用eBPF实现内核追踪
- Qt多线程编程
- JavaScript中的时间与日期、正则表达式和Function类型
- JavaScript中的变量、作用域、内存问题和基本包装类型