[leetcode 200] Number of Islands
2015-12-13 13:14
357 查看
Given a 2d grid map of
Example 1:
Answer: 1
Example 2:
Answer: 3
Credits:
Special thanks to @mithmatt for adding this problem and creating all test cases.
Solution:
dfs遍历一遍,在grid[i][j]如果是1,就把这个位置和周围置成2(任意非1和0的值), 这样遇到的1的个数,即为islands个数
'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
Credits:
Special thanks to @mithmatt for adding this problem and creating all test cases.
Solution:
dfs遍历一遍,在grid[i][j]如果是1,就把这个位置和周围置成2(任意非1和0的值), 这样遇到的1的个数,即为islands个数
void dfs(char** grid, int m, int n, int i, int j) { if (i < 0 || i >= m || j < 0 || j >= n) return; if (grid[i][j] == '1') { grid[i][j] = '2'; dfs(grid, m, n, i - 1, j); dfs(grid, m, n, i + 1, j); dfs(grid, m, n, i, j - 1); dfs(grid, m, n, i, j + 1); } } int numIslands(char** grid, int gridRowSize, int gridColSize) { int count = 0; int i = 0, j = 0; if (gridRowSize == 0 || gridColSize == 0 || grid == NULL) return count; for (i = 0; i < gridRowSize; i++) { for (j = 0; j < gridColSize; j++) { if (grid[i][j] != '1') { continue; } count++; dfs(grid, gridRowSize, gridColSize, i, j); } } return count; }
相关文章推荐
- android 单元测试出现错误及改正
- OC-037.NSString字符串的常用方法介绍
- 机器学习&深度学习(Python版)----Logistic Regression(逻辑回归)
- java float小数相减不准确
- 剑指offer系列之三十八:判断是否是平衡二叉树
- 在VM已安装Android4.4 连接小米手环 网络设置
- fusionchart实现ZoomLine 资源 破解版 出口能力
- matlab中k-means聚类算法画点
- engine ISO默认域nfs文件配置
- 走好职场每一步:关于求职技巧、跳槽迷思、职场困惑
- bootstrap封装成seajs cmd模块
- 用jQuery在IFRAME里取得父窗口的某个元素的值
- 信息安全系统设计基础第十四周学习总结
- android插件化-绑定宿主生命周期版本
- 位域http://www.nowcoder.com/questionTerminal/853a980f7db14eec87209c6a1e2d99dd
- Android SharedPreferences解析
- ASP.NET Web API相关的术语与概念摘录
- 使用golang的标准库搭建网站--4.关于静态资源处理的问题
- Nginx代理以及负载均衡配置
- zzulioj--1832--贪吃的松鼠(位运算好题)