当前位置: 首页 > news >正文

专注于响应式网站开发高端定制网站建设高端旅游定制

专注于响应式网站开发,高端定制网站建设高端旅游定制,自助建站营销招商,网站页面分析范文描述给一个 01 矩阵,求不同的岛屿的个数。0 代表海,1 代表岛,如果两个 1 相邻,那么这两个 1 属于同一个岛。我们只考虑上下左右为相邻样例 1:输入: [[1,1,0,0,0],[0,1,0,0,1],[0,0,0,1,1],[0,0,0,0,0],[0,0…

描述

给一个 01 矩阵,求不同的岛屿的个数。

0 代表海,1 代表岛,如果两个 1 相邻,那么这两个 1 属于同一个岛。我们只考虑上下左右为相邻

样例 1:

输入:
[[1,1,0,0,0],[0,1,0,0,1],[0,0,0,1,1],[0,0,0,0,0],[0,0,0,0,1]
]
输出:
3

样例 2:

输入:
[[1,1]
]
输出:
1

思路:先判断用什么方法解题

规则的二维网格结构-有相邻规则-统计连通块,最短路径,区域面积等 访问一个点后要访问所有相邻且符合条件的点-本质是图的遍历

通常情况下 最短路径以及数据量非常大用BFS 只需要遍历连通块通常情况DFS就可以了

易错点:容易将条件判断为上下左右不是1才会计数-这只会数“孤岛像素”,和“岛屿个数”不是一回事

代码如下:

public class Solution {

    // 上、下、左、右(顺序固定)

    private static final int[] DR = {-1, 1, 0, 0};

    private static final int[] DC = {0, 0, -1, 1};

    /**

     * @param grid: a boolean 2D matrix (true=陆地, false=海)

     * @return: 岛屿数量

     */

    public int numIslands(boolean[][] grid) {

        if (grid == null || grid.length == 0 || grid[0].length == 0) return 0;

        int m = grid.length, n = grid[0].length;//因为这里的岛屿不为锯齿状即规则二维数组 所以可以用grid[0].length计算出来所有的列都为这个值

        int count = 0;

        for(int r=0;r<m;r++)

        {

            for(int c=0;c<n;c++)

            {

                if(grid[r][c])//首次遇见一个小岛

                {

                    count++;

                    dfsSurroundIsland(grid,r,c);//去掉整块(标记为已访问 条件就是相邻的岛屿就是一整块)

                }

            }

        }

        return count;

    }

    private void dfsSurroundIsland(boolean[][] g, int r, int c)//消灭上下邻接重复的岛屿 这一片岛屿只算1次

     {

         //边界条件

         int m = g.length, n = g[0].length;

         if(r<0||r>=m||c<0||c>=n||!g[r][c])//g[r][c]表示 如果是海洋的话就停止了

         {

             return;

         }else

         {

          g[r][c] = false//将当前格子标记为已访问 该句是关键句

         }

         for(int i=0;i<4;i++)

         {

             dfsSurroundIsland(g,r+DR[i],c+DC[i]);//分别代表上下左右  dr 表示行的变化量 即进行上下偏移 dc表示列的变化量 即进行左右偏移

         }

     

    }

}

http://www.dtcms.com/a/435070.html

相关文章:

  • django网站开发教程杭州最便宜的网站建设
  • rpm包的安装方法
  • 内网环境下离线安装软件的完美解决方案(以MySQL为例)
  • 构造函数和初始化列表的关系
  • 济南网站优化建设局网站打不开
  • LabVIEW 系统稳定性计算
  • Rocky Linux 8 安装与配置 TigerVNC 服务完整操作文档
  • Testify Go测试工具包入门教程
  • 南阳网站建设xihewh成都网站建设公司有哪几家
  • **标题:发散创新:探索AR开发框架的核心技术**随着增强现实(AR)技术的飞速发展,AR开发框架成为了开发者们关注的焦
  • 网站推广的优势logo制作免费版
  • 汕头网站建设制作报价网片是干什么用的
  • 江西省住房和城乡建设厅的网站网站设计权限
  • 【人工智能通识专栏】第三十三讲:知识库的构建与应用
  • 、@RequestParam 取出文件项
  • llms.txt:为大模型打造的“网站说明书”
  • 浔川社团再创佳绩
  • wordpress js版本号郑州官网网站优化公司
  • 藏语自然语言处理入门 - 3 找关键词
  • TDengine 时序函数 SAMPLE 用户手册
  • 【动态规划DP:纸币硬币专题】P2840 纸币问题 2
  • wap网站分享到微信屏蔽 wordpress 插件下载
  • 网站com域名上不去cn能网址之家哪个好
  • Python基础入门例程79-NP79 字母转数字
  • 阿里滑块 最新版 分析
  • 独立开发者日常:宝塔面板使用教程
  • Redis面试题及详细答案100道(61-70) --- 性能优化篇
  • 网站快速收录土巴兔装修公司
  • 自助建网站软件平台中国交通建设监理协会网站打不开
  • 上海网站平台建设整站优化cms