200. Number of Islands

2023-10-31

求岛屿的数量

求岛屿的数目情况

主要有两种情况

解析

这道题目的本质问题其实是想就求,不相连的1 的块数目情况,在查找的过程当中, 相邻的1是当做只有一块的基本情况, 要去何必周边的1,情况, 就是标记为是岛屿就行了这种情况下,就是利用一个一直回溯下去的思想, 向四周进行一个基本的扩展就行了。

public class Solution {

private int n;
private int m;

public int numIslands(char[][] grid) {
    int count = 0;
    n = grid.length;
    if (n == 0) return 0;
    m = grid[0].length;
    for (int i = 0; i < n; i++){
        for (int j = 0; j < m; j++)
        // 判断是否为 1的情况, 如果不是1的情况的话可以直接什么都不做的情况下,
            if (grid[i][j] == '1') {
                DFSMarking(grid, i, j);
                ++count;
            }
    }    
    return count;
}

private void DFSMarking(char[][] grid, int i, int j) {
// 首先就是判断参数是否符合条件等情况, 
// 一定要有grid[i][j]!='1'这个条件, 否则会一直循环下去,

//这种属于基本的边界检查
i < 0 || j < 0 || i >= n || j >= m 

//不符合条件的基本
// if(grid!='0')
 
    if (i < 0 || j < 0 || i >= n || j >= m || grid[i][j] != '1') return;
    // 主要函数代码体
    grid[i][j] = '0';
// 向左右上下周边进行扩展, 如何有多余的1的话
    DFSMarking(grid, i + 1, j);
    DFSMarking(grid, i - 1, j);
    DFSMarking(grid, i, j + 1);
    DFSMarking(grid, i, j - 1);
}

时间复杂度基本

时间复杂度为O(m*n), 还是还每个数组元素进行一个遍历情况,

第二种方法联合查找

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

200. Number of Islands 的相关文章

  • 如何使用纯 CSS 在 HTML 中获取一棵树

    我正在尝试遵循这个tutorial http odyniec net articles turning lists into trees 这是my code https github com gurjeet CSSTree so far 本
  • 根据查找 NP 头的规则在 NLTK 和 stanford 解析中查找名词短语的头

    一般来说 名词短语的中心词是位于 NP 最右边的名词 如下所示 树是父 NP 的中心词 所以 ROOT S NP PP
  • 使用STL的红黑树内部实现

    我知道我的STL g 4 x x附带 使用红黑树来实现地图等容器 是否可以直接使用STL内部的红黑树 如果是这样 怎么办 如果不是 为什么不 为什么STL不公开红黑树 令人惊讶的是 我无法使用谷歌找到答案 编辑 我正在研究使用红黑树作为插入
  • 可折叠树示例中的 d3.js v4 古怪链接转换

    如果您玩下面的可折叠树 您会发现当您到达树的末尾并展开和折叠节点时 这些线正在做一些古怪的事情 我不完全确定是什么驱动了这种行为 或者我的重写是否的在此输入链接描述 https bl ocks org mbostock 4339083完全没
  • 单击节点时打开分支?

    我被困住了jsTree http www jstree com 这里 到目前为止 它有效 我可以使用 图标浏览和展开节点 并在单击节点时打开页面 但我仍然希望它在有人单击节点时展开所有直接节点 我环视了至少两个小时 但什么也没找到 官方网站
  • 为什么在算法中使用子树大小来选择二叉树中的随机节点?

    我偶然发现了从二叉树中选择随机节点的算法的几种实现 它们都使用子树大小属性 但是 我不明白为什么知道子树大小有帮助 这是实现A https stackoverflow com a 32011526 and B https www geeks
  • 如何使用表达式树安全访问可为空对象的路径?

    当我将反序列化的 XML 结果放入 xsd 生成的对象树中 并希望使用该树 a b c d e f 内的某些深层对象时 如果该查询路径上的任何节点丢失 它将给出异常 if a b c d e f null Console Write ok
  • 提取给定节点的所有父节点

    我正在尝试使用以下命令提取每个给定 GO Id 节点 的所有父级EBI RDF sparql 端点 https www ebi ac uk rdf services sparql 我是根据this https stackoverflow c
  • 将数据库结果转为数组

    我刚刚为组织查询分层数据的 闭包表 方式制作了更新 添加 删除部分 如本幻灯片第 70 页所示 http www slideshare net billkarwin sql antipatterns strike back http www
  • 用 pandas 查找树中叶节点的所有祖先

    我有一个表 有两列 父 和 子 这是从 SAP ERP 下载的 SETNODE 表 需要在 python 中创建一个数据框 其中每个级别作为其自己的列 相对于其父级和之前的所有级别 在Python 3 中 完整关系的级别数量未知 或始终变化
  • 如何修复 STL 样式容器以容纳不完整或抽象类型?

    几天前 我尝试以与 STL 容器相同的风格编写一个基本的树实现 现在我尝试在我的代码中使用它 但是有两件事似乎不起作用 但可以说std vector 即 使用不完整类型和使用抽象类型 如何修复我的树实现以获得此功能 我尝试稍微压缩一下我的代
  • 如何使用 d3.v4 中的 JSON 数据创建树布局 - 不使用 stratify()

    我正在尝试将一些 d3 代码从 v3 更新到版本 4 我有一个使用 JSON 数据的树形图 d3 v4 示例展示了如何使用 stratify 将表格数据 例如flare csv 转换为分层数据https bl ocks org mbosto
  • java数据结构模拟数据树

    我需要帮助定义使用什么方法 我有一个 SOAP 响应 给我一个 xml 文件 我需要在屏幕上显示 3 个相关列表 当您在第一个列表中选择一个项目时 相应的选择将出现在第二个列表中 依此类推 我只对从 xml 流中提取数据后如何有效地组织数据
  • Silverlight 中的图形可视化

    我有一个表示有向图的数据结构 我正在寻找一个好的 Silverlight 可视化 以允许我从一个节点导航到另一个节点 最好带有一些漂亮的动画 有谁知道这种显示有什么好的 UI 控件或框架吗 甚至是来自另一个领域的样本 也许是社交网络 我的图
  • 我该如何实现这个折叠功能呢?

    给出了两种数据类型 颜色 和 植物 data Color Red Pink White Blue Purple Green Yellow deriving Show Eq data Plant Leaf Blossom Color Stal
  • 在应用 varImp 函数时使用带插入符号的 xgbTree 方法和目标变量的权重时出现非树模型错误

    当我使用 Caret 包中的 train 函数创建模型以使用权重进行梯度提升时 在使用 varImp 函数时出现错误 表示它没有检测到树模型 但当我去掉重量时它就起作用了 下面的代码产生错误 set seed 123 model weigh
  • 应用对数来导航树

    我曾经知道一种使用对数从树的一片叶子移动到树的下一个 有序 叶子的方法 我认为它涉及获取 当前 叶子的位置值 排名 并将其用作从根向下到新目标叶子的新遍历的种子 一直使用对数函数测试来确定是否沿着右或左节点向下到达叶子 我已经不记得如何运用
  • 如何从 Trie 中检索给定长度的随机单词

    我有一个简单的 Trie 用来存储大约 80k 长度为 2 15 的单词 它非常适合检查字符串是否是单词 但是 现在我需要一种获取给定长度的随机单词的方法 换句话说 我需要 getRandomWord 5 来返回 5 个字母的单词 所有 5
  • 如何从此 d3.js layout.tree 获取树祖先和树后代的列表?

    我正在尝试和修改this https bl ocks org mbostock 4339083d3 js 的示例 用于根据 JSON 树结构绘制树 这就是树的一部分开始时的样子 我正在尝试进行两个单独的修改 但我不知道该怎么做 当单击节点的
  • 在c#中遍历对象树

    我有一棵由多个对象组成的树 其中每个对象都有一个名称 string id int 以及可能是同一类型的子数组 如何遍历整个树并打印出所有 id 和名称 我是编程新手 坦率地说 我很难理解这个问题 因为我不知道有多少个级别 现在我正在使用fo

随机推荐

  • nfs服务器性能测试,nfs性能测试报告

    测试环境 软件nfs 1000M内网环境 测试说明 所有文件写入均在nfs客户端写入共享的目录中 然后在本地一个单独目录同样写入 比较二者时间及速度 1 大文件写入测试 创建5G的单个文件 Nfs 5000 0 records in 500
  • MATLAB画图练习

    这次画一些在数学建模中比较实用的图 掌握了其中的画图技巧 在比赛时改变一些参数就可以套用了 1 画极坐标图 clc clear clf theta 0 0 01 2 pi r 5 cos 10 theta polar theta r 2 画
  • Leveldb源码分析--13

    8 FilterPolicy Bloom之2 8 5 构建FilterBlock 8 5 1 FilterBlockBuilder 了解了filter机制 现在来看看filter block的构建 这就是类FilterBlockBuilde
  • 推挽电路和开集电路介绍

    推挽输出 Push Pull Output 推挽输出结构是由两个MOS或者三极管收到互补控制的信号控制 两个管子时钟一个在导通 一个在截止 如图1所示 图1 推挽输出结构 推挽输出的最大特点是可以真正能真正的输出高电平和低电平 在两种电平下
  • Jupyter

    jupyter安装conda环境 方法一 cmd进入环境 activate Env 运行 conda install nb conda kernels 方法二 首先安装ipykernel conda install ipykernel 在虚
  • 解决Python代码编码问题 SyntaxError: Non-UTF-8 code starting with '\xc1'

    学习编写Py程序时突然报错 SyntaxError Non UTF 8 code starting with xbb in file C Users v Desktop Test py on line 4 but no encoding d
  • 请求转发和重定向

    请求转发是在一次http请求中完成的 重定向是在多次的http请求中完成的 所以之后的request getParameter 得不到结果 RequestDispatcher是通过调用HttpServletRequest对象的getRequ
  • SeekBar.OnSeekBarChangeListener解析

    public static interface SeekBar OnSeekBarChangeListener android widget SeekBar OnSeekBarChangeListener 概述 当进度改变后用于通知客户端的
  • Qt中ui设计内容改变后,编译运行时新增控件无法显示问题

    解决方法 两种 第一种 在Qt的项目中 有一个Shadow build选项 取消勾选 然后重新编译运行 即可 第二种 不取消勾选Shadow build 在上面的图中可以看到 概要 中有一个 构建目录 复制这个路径 到文件资源管理器中输入这
  • OpenText Exceed TurboX 通过安全远程访问高性能图形化应用程序和桌面保证业务连续性

    OpenText Exceed TurboX 通过安全远程访问高性能图形化应用程序和桌面保证业务连续性 OpenText Exceed TurboX 是一种安全的虚拟桌面解决方案 可实现现代混合工作 利用 Exceed TurboX 混合云
  • 2048游戏C语言代码

    听说2048游戏实现起来很easy 所以今天就试了试 确实不太难 要想编的很成功 也不是太容易 有很多细节需要考虑 下面是我自己设计的代码 估计里面会漏洞百出 希望路过大神能指点一二 include
  • 学习笔记-基数排序

    基数排序 将一个一维数组从大到小排列 基数排序是桶排序的扩展 它是一种稳定的排序方法 也就是说 排序之前相同大小的数字的位置次序在排序后并没有发生改变 同时 基数排序是一种用空间换时间的排序方法 当数据量过大时 java的堆内存耗尽 方法就
  • 如何使用python读取excel(一)

    在进行操作前 我们先熟悉一下excel表格的基本术语 工作簿 workbook 包含多个工作表的 表单 worksheet 指一个工作簿里面的每个表单 行 row 列 column 单元格 cell 这里我们使用openpyxl读取数据 查
  • Win10搭建Docker Desktop并安装vim

    Win10搭建Docker Desktop 1 介绍 Docker Desktop是适用于Windows的Docker桌面 是Docker设计用于在Windows 10上运行 它是一个本地 Windows 应用程序 为构建 交付和运行doc
  • 怎么查看虚拟机的IP地址?

    第一个方法ifconfig 先登录自己的虚拟机账号 进入桌面 然后右键 点击Open Terminal 输入ifconfig 然后回车 就可以了 第二种方法 也是上面的步骤 输入 ip addr也是同样的效果
  • 【Java基础篇

    个人主页 兜里有颗棉花糖 欢迎 点赞 收藏 留言 加关注 本文由 兜里有颗棉花糖 原创 收录于专栏 JavaSE primary 本专栏旨在分享学习JavaSE的一点学习心得 欢迎大家在评论区讨论 继承允许一个类继承另一个类的属性和方法 并
  • 通过Python调用禅道API

    禅道API接口 非REST接口 调试版本 11 3 百度出来的100 都用不了 本篇除外 于是自己修改了网上代码 先get session 再post登录 最后调用产品列表验证 实测通过 1 import requests 2 import
  • 2 应用层 - 应用层协议原理

    研发网络应用程序的核心是写出能够运行在不同的端系统和通过网络彼此通信的程序 目录 1应用层协议原理 1 1 网络应用程序体系结构 1 2 进程通信 1 3 运输层协议选择 1 4 因特网提供的运输服务 1 4 1 TCP服务 1 4 2 U
  • unity如何现实增强_增强型世博会:Unity开发人员将如何成为未来的一部分

    unity如何现实增强 Unity is invested in Augmented Reality More than 91 of Hololens applications and 64 of mobile AR apps are ma
  • 200. Number of Islands

    求岛屿的数量 求岛屿的数目情况 主要有两种情况 解析 这道题目的本质问题其实是想就求 不相连的1 的块数目情况 在查找的过程当中 相邻的1是当做只有一块的基本情况 要去何必周边的1 情况 就是标记为是岛屿就行了这种情况下 就是利用一个一直回