题解 | #岛屿数量#
岛屿数量
https://www.nowcoder.com/practice/0c9664d1554e466aa107d899418e814e
#include <vector> class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * 判断岛屿数量 * @param grid char字符型vector<vector<>> * @return int整型 */ int nex[4][2]={{0,-1},{0,1},{1,0},{-1,0}}; void dfs(vector< vector<char>>& grid,int i,int j ){ int n=grid.size(); int m=grid[0].size(); grid[i][j]='0'; for(int t=0;t<4;t++){ int dx=i+nex[t][0]; int dy=j+nex[t][1]; if(dx>=0&&dx<n&&dy>=0&&dy<m&&grid[dx][dy]=='1'){ dfs(grid,dx,dy); } } } int solve(vector<vector<char> >& grid) { // write code here int n=grid.size(); if(n==0) return 0; int m=grid[0].size(); int count =0; for(int i=0;i<n;i++){ for(int j=0;j<m;j++){ if(grid[i][j]=='1'){ count++; dfs(grid,i,j); } } } return count; } };
经典的DFS,将一个1遍历周边的四个方向,遇1置0即可。