微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

[LeetCode] 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:

11110 11010 11000 00000

Answer: 1

Example 2:

11000 11000 00100 00011

Answer: 3

解题思路

深度优先搜索,要求的结果就是图中连通份量的个数。更详细的思路可以参考Find the number of islands。

实现代码

//Runtime:13ms class Solution { public: int numIslands(vector<vector<char>> &grid) { if (grid.empty() || grid[0].empty()) return 0; int row = grid.size(); int col = grid[0].size(); int cnt = 0; for (int i = 0; i < row; i++) { for (int j = 0; j < col; j++) { if (grid[i][j] == '1') { cnt++; dfs(grid,i,j); } } } return cnt; } private: void dfs(vector<vector<char>> &grid,int row,int col) { if (row < 0 || row >= grid.size() || col < 0 || col >= grid[0].size() || grid[row][col] != '1') { return; } grid[row][col] = 'X'; dfs(grid,row,col + 1); dfs(grid,row + 1,col); dfs(grid,col - 1); dfs(grid,row - 1,col); } };

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐