leetcode 200. 岛屿数量
# 思路
深度优先遍历
遍历整个数组,遇到1,ans++,ans是记录岛的个数的
运行一下dfs函数,把这个岛所有陆地给我沉喽,这个岛全部的1变成0
等把grid全遍历完,grid就全是0了,再把ans输出,这个ans就是我们记录的岛的个数
注意:grid竟然是char类型的,所有1和0都要加单引号哦
代码
class Solution { public: void Dfs(vector<vector<char>>&grid,int curr_i,int curr_j) { //边界条件 超出之后,什么操作都不做 if(curr_i<0||curr_i==grid.size()||curr_j<0||curr_j==grid[0].size()||grid[curr_i][curr_j]=='0') { return; } //进来的点先置为0 grid[curr_i][curr_j] ='0'; //定义方向数组 上下右左 int dx[4] = {0,0,1,-1}; int dy[4] = {1,-1,0,0}; //查找每个单元格的上下左右进行递归 for (int index = 0;index<4;index++) { Dfs(grid,curr_i+dx[index],curr_j+dy[index]); } } int numIslands(vector<vector<char>>& grid) { int result = 0; //遍历二维数组 for(int i = 0;i<grid.size();i++) { for(int j = 0;j<grid[0].size();j++) { //只要找到有1的点就开始递归找到当前的岛屿 if(grid[i][j]=='1') { result++; Dfs(grid,i,j); } } } return result; } };
以大多数人努力程度之低,根本轮不到去拼天赋~