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 的相关文章

  • 二叉树的列表实现是否可扩展?

    我正在写一个简单的编解码器 该树将被预先计算 一旦构建就不会发生任何变化 它只会被搜索 平衡二叉树的所有叶节点都是信号值 内部节点是近似压缩表示 如果我有很大的叶节点值 使用 stl 矢量的列表实现是否可扩展 目前我不知道有多大 列出实现
  • 构建具有继承的通用树

    我正在构建一个通用的Tree
  • 创建二叉树的时间复杂度

    我正在尝试从提供的源创建一棵树 要添加到树中的 2 个节点 以及应添加这 2 个新闻节点的节点 为了找到该节点在树中的位置 我使用了中序遍历 该遍历的时间复杂度为 O n 因此 如果要在树中添加 n 个节点 则创建整个树的时间复杂度为 O
  • 如何递归探索Python嵌套字典? [复制]

    这个问题在这里已经有答案了 我很好奇是否有一种方法可以在 python 中递归地探索嵌套字典 我的意思是 假设我们有一个如下示例 d a b c 1 2 3 获取最里面字典的内容需要什么代码 c 1 2 3 遍历a and b 在这种情况下
  • 寻找成熟的 M-Tree 实现 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个成熟的 java M Tree 实现 甚至任何 M Tree 实现 除了我找到的唯一实现 http en wikipedia
  • 提取给定节点的所有父节点

    我正在尝试使用以下命令提取每个给定 GO Id 节点 的所有父级EBI RDF sparql 端点 https www ebi ac uk rdf services sparql 我是根据this https stackoverflow c
  • 二叉树实现C++

    二叉树插入 include stdafx h include
  • d3.js:修改树布局中的链接

    抱歉我的英语不好 我在这里使用这个例子 http bl ocks org mbostock 4339083 http bl ocks org mbostock 4339083构建树形图 但我用矩形更改了根的子级中的圆圈 现在该图有点混乱 因
  • 使用redis进行树形数据结构

    我需要为基于树的键值开发一个缓存系统 与Windows注册表编辑器非常相似 其中缓存键是字符串 表示树中到值的路径 可以是原始类型 int string bool double 等 或子树本身 例如 key root x y z w val
  • 在 Haskell 中获取玫瑰树的根

    最近我开始学习 Haskell 并在以下练习中遇到困难 Write functions root Rose a gt a and children Rose a gt Rose a that return the value stored
  • Python Pandas 按列对多索引进行排序,但保留树结构

    使用 pandas 0 20 3 我尝试按列 D 对数据帧的 n 个多级进行排序 其中的值 降序 以便维护组的层次结构 输入示例 D A B C Gran1 Par1 Child1 3 Child2 7 Child3 2 Par2 Chil
  • 如何在 SQL 中进行广度优先搜索?

    给定一棵存储为关系的树 Parent Child 1 2 1 3 3 4 3 5 2 6 7 8 7 9 如何获取给定节点的所有后代 例如 对于 1
  • 是否可以在 Java 中创建对象树?

    我正在尝试用 Java 创建对象树 我还想使用一个 Java 类 可以轻松地在树中添加或删除节点 用于此目的的最佳类是什么 示例 这是一个对象数组 数组顶部的对象是字符串 world 这里的叶子是整数 我想添加字符串 This is at
  • 缓存感知树的实现

    I have a tree where every node may have 0 to N children 用例是以下查询 给定指向两个节点的指针 这些节点是否位于树的同一分支内 Examples q 2 7 gt true q 5 4
  • d3 树 - 有相同孩子的父母

    我一直在将代码从 JIT 转换为 D3 并使用树布局 我已经复制了代码http mbostock github com d3 talk 20111018 tree html http mbostock github com d3 talk
  • 从 PHP 中的平面路径数组构建目录树

    所以 标题可能令人困惑 但我不知道如何表达这种数组结构 它肯定是一个树结构 但至于它的创建 这正是我所渴望的 它似乎不遵循典型的递归数组树构建 我正在尝试从平面路径数组创建列目录布局 每个路径都位于其自己的多维数组内 该数组旨在构建 mac
  • javascript中的父子关系排序

    我有以下结构 category id 1 parent category null category id 2 parent category 1 category id 3 parent category 1 category id 4
  • 如何更新 Sencha Touch 中的嵌套列表/树存储?

    我有一个嵌套列表 必须根据用户在 Ext Carousel 中选择的内容填充新数据 TreeStore load newData this does not work TreeStore removeAll this works 似乎文档和
  • XSLT 将平面树结构转换为列表

    我有一个描述eshop树结构的xml文件 我只需要获取所有子组的列表 我不知道结构中有多少个父 子级别 输入 xml 如下所示
  • QAbstractItemModel 如何表示树?

    我仍然很难理解 QAbstractItemModel 对项目的表示 有两种返回 QModelIndex 项的方法对我来说没有任何意义 QModelIndex QAbstractItemModel index int row int colu

随机推荐

  • 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 情况 就是标记为是岛屿就行了这种情况下 就是利用一个一直回