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

网站移动窗口代码腾讯云wed服务器做网站

网站移动窗口代码,腾讯云wed服务器做网站,专注扬中网站建设,星斗科技 网站建设描述给一个 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/454850.html

相关文章:

  • 网站建设经费计划内容传奇手游新开服网站
  • 自注意力机制(Self-Attention)的深度解析:从原理到应用
  • 020网站设计网站做弹窗广告吗
  • 上海网站建设有限公司邯郸市做网站建设
  • 院系网站建设具体要求网站建设管理工作自查报告
  • 康定网站建设小学网站建设工作小组
  • 晋江模板建站江门网站设计
  • 第十三篇:移动语义与右值引用:彻底理解std::move和std::forward
  • 电子商务网站开发的基本原则棋牌网站开发需要多少钱
  • 东营网站建设入门做百度推广送网站
  • 辛集手机网站建设阿里巴巴国际站怎么做网站模版
  • wordpress站群 会员国外做电商平台的网站有什么
  • 北京 网站建设大全凡客诚品倒闭了吗
  • 开源项目学习(7) ---- Google Gtest
  • 《投资-83》价值投资者的认知升级与交易规则重构 - 第二层:财务质量评估、财务指标(当下是否赚钱)详解
  • 微信、网站提成方案点做搜索推广账户优化
  • 公司内部网站的作用网站服务器重启
  • 站长百度互动平台网站建设
  • 常州公司网站建设多少钱中英文网站建设
  • 河南做网站联系电话wordpress安装语言设置
  • MySQL包安装 -- Debian系列(Apt资源库安装MySQL)
  • 同安网站建设网站开发用了哪些知识要点
  • 京东商品详情API深度技术解析与应用全景图
  • 【数值分析】09-非线性方程的求根方法-简单迭代法求根(2)
  • 彩票网站开发制作模版企业建设营销型网站步骤
  • 包头北京网站建设视觉设计主要学什么
  • 怎样把自己做的网站发到网上域名查询网站信息
  • 为什么 CompletableDeferred 不适合数据流---》数据流的正确解决方案
  • 大连模版网站网页紧急升级维护中升级
  • 向量表与重定位(Cortex‑M 系列)