lintcode:Number of Islands 岛屿的个数
2015-10-13 19:22
337 查看
题目:
0代表海,1代表岛,如果两个1相邻,那么这两个1属于同一个岛。我们只考虑上下左右为相邻。
样例
在矩阵:
中有
解题:
在网上看到是根据深度优先算法,和递归思想进行解决的题目,当发现这一点是1的时候,将周围的点都设置成 0,如何设置成 0?第一步:将当前点设置成0,第二步:临近的点递归调用上面的方法。
Java程序:
View Code
总耗时: 433 ms
岛屿的个数
给一个01矩阵,求不同的岛屿的个数。0代表海,1代表岛,如果两个1相邻,那么这两个1属于同一个岛。我们只考虑上下左右为相邻。
样例
在矩阵:
[ [1, 1, 0, 0, 0], [0, 1, 0, 0, 1], [0, 0, 0, 1, 1], [0, 0, 0, 0, 0], [0, 0, 0, 0, 1] ]
中有
3个岛.
解题:
在网上看到是根据深度优先算法,和递归思想进行解决的题目,当发现这一点是1的时候,将周围的点都设置成 0,如何设置成 0?第一步:将当前点设置成0,第二步:临近的点递归调用上面的方法。
Java程序:
class Solution: # @param {boolean[][]} grid a boolean 2D matrix # @return {int} an integer def numIslands(self, grid): # Write your code here m = len(grid) if m==0: return 0 n = len(grid[0]) if n==0: return 0 count = 0 for i in range(m): for j in range(n): if grid[i][j]==True: self.dfs(grid,i,j) count +=1 return count def dfs(self,grid,i,j): if i<0 or j<0 or i>=len(grid) or j>=len(grid[0]): return if grid[i][j]==True: grid[i][j]=False self.dfs(grid,i-1,j) self.dfs(grid,i+1,j) self.dfs(grid,i,j-1) self.dfs(grid,i,j+1)
View Code
总耗时: 433 ms
相关文章推荐
- C++__类模板的派生
- 关于双向反射率BRDF的定义
- USB信息流格式总结
- iOS中 读取相册,调用系统相机 技术分享
- iOS中 读取相册,调用系统相机 技术分享
- 练习:存储学生信息
- 一道题理解Java父子类初始化顺序什么是CopyOnWrite容器
- 大龄屌丝自学笔记--Java零基础到菜鸟--034
- vijosP1289 老板娘的促销方案
- 第四次作业--目标软件:必应词典
- Objective-c开发中混合使用ARC
- 第7周-反向显示一个数
- 解析Python中while true的使用
- poj Balanced Lineup (线段树区间最值+优化)
- web技术概论第一周作业
- 前端工程师必备的PS技能——切图篇(笔记)
- 杭电acm--1037
- 借贷宝“自我绑架”:传销式推广只能“烧钱”玩下去?
- ios短信和电话--参考
- Reachability网络判断