Leetcode 200. 岛屿数量 中等 DFS
题目:
给你一个由 '1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量。
岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。
此外,你可以假设该网格的四条边均被水包围。
示例 1:
输入:grid = [
["1","1","1","1","0"],
["1","1","0","1","0"],
["1","1","0","0","0"],
["0","0","0","0","0"]
]
输出:1
思路:
求二维矩阵中有多少互不联通的1块。
可以遍历,当遇到1时,计数加1,然后以其为起点进行深度遍历,将联通的1设为0.
class Solution { public: int numIslands(vector<vector<char>>& grid) { int ret=0; int m=grid.size(); int n=grid[0].size(); for(int i=0;i<m;++i){ for(int j=0;j<n;++j){ if(grid[i][j]=='1'){ traverse(grid,i,j); ret++; } } } return ret; } void traverse(vector<vector<char>>& grid, int i, int j){ if(grid[i][j]=='1'){ grid[i][j]='0'; for(int k=0;k<4;++k){ int m=i+direct[k][0]; int n=j+direct[k][1]; if(m>=0&&m<grid.size()&&n>=0&&n<grid[0].size()&&grid[m][n]=='1'){ traverse(grid,m,n); } } } } int direct[4][2]={{1,0},{-1,0},{0,1},{0,-1}}; };
联系方式:emhhbmdfbGlhbmcxOTkxQDEyNi5jb20=
分类:
leetcode
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了