2026/3/9 17:10:47
网站建设
项目流程
网站建设方案书模板 备案,南京h5 网站建设,电子商务网站建设与实践上机指导教程,建立网站费用怎么做会计分录题目#xff1a;
给你一个由 ‘1’#xff08;陆地#xff09;和 ‘0’#xff08;水#xff09;组成的的二维网格#xff0c;请你计算网格中岛屿的数量。
岛屿总是被水包围#xff0c;并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。
此外#xff0c;…题目给你一个由 ‘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示例 2输入grid [[‘1’,‘1’,‘0’,‘0’,‘0’],[‘1’,‘1’,‘0’,‘0’,‘0’],[‘0’,‘0’,‘1’,‘0’,‘0’],[‘0’,‘0’,‘0’,‘1’,‘1’]]输出3解析本道题我使用了DFS来解题1 发现新陆地每当找到一块未被访问的陆地‘1’2标记沉没以这块陆地为起点向四个方向扩散把所有相连的陆地都沉没标记为’0’3 计数岛屿每发现一次新陆地就意味着找到了一个新的岛屿具体代码/** * param {character[][]} grid * return {number} */varnumIslandsfunction(grid){letres0// 岛屿计数器// 遍历整个网格for(leti0;igrid.length;i){for(letj0;jgrid[0].length;j){// 发现一块新陆地if(grid[i][j]1){res// 岛屿数量1dfs(grid,i,j)// 沉没整个岛屿}}}returnres};// DFS辅助函数沉没当前岛屿functiondfs(grid,i,j){// 递归终止条件越界或遇到水if(i0||j0||igrid.length||jgrid[0].length||grid[i][j]0){return}// 将当前陆地标记为水沉没grid[i][j]0// 向四个方向继续探索沉没dfs(grid,i-1,j)// 向上dfs(grid,i1,j)// 向下dfs(grid,i,j-1)// 向左dfs(grid,i,j1)// 向右}