LeetCode Number of Islands(flood fill)

问题:给出一个由0和1组成的二维网格图(m*n),1表示陆地,0表示水。要求统计有多少块陆地

思路:常见的flood fill算法有三种,深度优先搜索、广度优先搜索以及广度扫描法。广度扫描法其实原理与广度优先搜索类似,只是在解空间比较大时,深度优先搜索占用的栈空间比较大,广度优先搜索在队列中占用的空间比较大。广度扫描法相当于是用时间来换取空间。此问题使用广度优先搜索时间复杂度为O(m*n),空间复杂度最坏为O(m*n),用广度优先搜索时间复杂度为O(m*n),空间复杂度为O(4^k),其中k表示深度,而用广度扫描法时间复杂度为O(m^2*n^2),空间复杂度为O(m*n)。另外一种方法是使用并查集

具体代码参考:

https://github.com/wuli2496/OJ/tree/master/LeetCode/Number%20of%20Islands

发布了1365 篇原创文章 · 获赞 71 · 访问量 140万+

猜你喜欢

转载自blog.csdn.net/wuli2496/article/details/105605441