leetcode 200. 岛屿数量 golang实现

【经典算法】LeetCode 200. 岛屿数量(Java/C/Python3/Go实现含注释说明,中等) 方式优点缺点时间复杂度空间复杂度DFS实现简单,容易理解在最坏情况下,空间复杂度较高O(mn)O(mn)(DFS栈空间) 阅读详情
描述
给定一个由 '1'(陆地)和 '0'(水)组成的的二维网格,计算岛屿的数量。一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地连接而成的。你可以假设网格的四个边均被水包围。

示例 1:

输入:
11110
11010
11000
00000

输出: 1
示例 2:

输入:
11000
11000
00100
00011

输出: 3
思路
深度优先遍历
每次遇到=1的地方 岛屿数+1 上下左右开始遍历 将遇到的1的位置全部置为0 遇到0的地方或者遍历返回
实现
func numIslands(grid [][]byte) int {
    var count int
    if len(grid) == 0{
        return count
    }
    rows := len(grid)
    cols := len(grid[0])

    for i := 0; i < rows; i++{
        for j := 0; j < cols; j++{
            if grid[i][j] == '1'{
                dfs(grid, i, j, rows, cols)
                count++
            }
        }
    }

    return count
}

func dfs(grid [][]byte, i, j, rows, cols int){
    if i < 0 || j < 0 || i >= rows || j >= cols || grid[i][j] == '0'{
        return
    }

    grid[i][j] = '0'
    dfs(grid, i-1, j, rows, cols)
    dfs(grid, i+1, j, rows, cols)
    dfs(grid, i, j-1, rows, cols)
    dfs(grid, i, j+1, rows, cols)

    return
}
(LeetCode 面试经典 150 题) 200. 岛屿数量(深度优先搜索dfs || 广度优先搜索bfs) 思路:bfs+dfs,两种解法。C++版本是bfs版本,JAVA和GO是dfs版本。C++版本: JAVA版本: GO版本: 阅读详情

相关推荐

【LeetCode】200.岛屿数量(dfs+bfs+并查集,超详细图文解释)

题目 分析 说明:以下介绍的算法,除了并查集以外,DFS 和 BFS 都属于很基础的算法内容,也非常好理解,写法也相对固定,读者需要多写,发现并记录自己的问题,我也是在写了几遍甚至是在写本题解的过程中,才发现出自己的问题。 这道题是可以使用一个经典的算法来解决的,那就是 Flood fill,以下的定义来自 维基百科:Flood fill 词条。 Flood fill 算法是从一个区域中提取若干个连通的点与其他相邻区域区分开(或分别染成不同颜色)的经典 算法。因为其思路类似洪水从一个区域扩散到所有能到

Viper的程序员修炼手册 1503

LeetCode刷题:200. 岛屿数量(golang版)

题目描述 给你一个由 '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 = .

admin_o1的博客 574

leetcode-Golang:试着用Golang刷leetcode题库

leetcode-Golang 试着用Golang刷leetcode题库 2018/5/29 ACM真好玩 断更断更 去他妈的Golang

golang力扣leetcode 200.岛屿数量

200.岛屿数量200.岛屿数量题解代码 200.岛屿数量 200.岛屿数量 题解 思路:上下左右是1的就是同一块地方,问一个二维矩阵有多少个地方,dfs,遇到1变成0即可 代码 package main func numIslands(grid [][]byte) int { cnt := 0 for i := 0; i < len(grid); i++ { for j := 0; j < len(grid[i]); j++ { if grid[i][j] == '1' {

清风 554

编程题目之岛屿数量问题

今天给大家介绍一道编程题目——求解岛屿数量,这种类型的题目在大多数算法工程师笔试中经常遇到。题目来源力扣。 题目描述: 给定一个由 '1'(陆地)和 '0'(水)组成的的二维网格,计算岛屿的数量。一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地连接而成的。你可以假设网格的四个边均被水包围。 示例 1: 输入: 11110 11010 11000 00000 输出: 1 示例 2: 输入: 11000 11000 00100 00011 输出: 3 下面我用两种方式来解决该问题。 第一种方式:BFS(广度优先遍历) 解题思路:使用队列对每个区域中每个陆地相邻的所有陆地进行存储。

列表实现岛屿数量(DFS+BFS)

** 列表实现岛屿数量(DFS+BFS) ** 给定一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维网格,计算岛屿的数量。一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地连接而成的。你可以假设网格的四个边均被水包围。 示例 1: 输入: 11110 11010 11000 00000 输出: 1 示例 2: 输入: 11000 11000 00100 00011 输出: 3 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/number-of-islands 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

Golang | Leetcode Golang题解之第200题岛屿数量

Golang | Leetcode Golang题解之第200题岛屿数量

weixin_66442839的博客 706

制造业批次管理中双计量单位动态转换的实践指南

本文详细介绍了制造业批次管理中双计量单位动态转换的实践指南,特别是在SAP系统中的配置与操作步骤。通过实际案例展示了如何解决采购与生产部门计量单位不一致的问题,提升物料管理效率。重点讲解了批次特性配置、移动类型调整及常见问题排查方法,适用于金属加工、化工等多个行业。

weixin_29228203的博客 158

Golang每日一练(leetDay0068) 二叉树右视图、岛屿数量

199. 二叉树的右视图 Binarytree Right Side View🌟🌟   200. 岛屿数量 Number-of-islands🌟🌟

汉阳Hann's Home 826

Element Server Suite社区版Helm部署:私有Matrix聊天服务器快速搭建指南

在云原生和微服务架构日益普及的今天,容器化部署已成为现代应用交付的标准范式。Kubernetes作为容器编排的事实标准,通过声明式配置和自动化管理,极大地简化了复杂分布式系统的部署与运维。Helm作为Kubernetes的包管理器,通过预定义的Chart模板,将应用及其依赖打包,实现了真正的“一键部署”,显著提升了部署效率和可重复性。这种技术组合的价值在于,它让开发者能够专注于业务逻辑,而非底层基础设施的复杂性,尤其适用于需要快速搭建、易于维护的服务场景。Element Server Suite Commu

weixin_42610010的博客 299

实测有效!YOLOv8融合EMA注意力机制后,在无人机航拍目标检测中的性能提升对比

本文详细介绍了YOLOv8融合EMA注意力机制在无人机航拍目标检测中的性能提升效果。通过多尺度特征融合和通道-空间双重注意力机制,EMA模块显著提升了小目标检测的准确率,mAP@0.5平均提升4.2%,同时保持推理速度基本不变。文章还提供了模型定制、训练技巧和实际部署优化的全流程指南。

weixin_33704234的博客 391

leetcode岛屿的个数:广度优先搜索(BFS)

题目:  岛屿的个数 给定一个由 '1'(陆地)和 '0'(水)组成的的二维网格,计算岛屿的数量。一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地连接而成的。你可以假设网格的四个边均被水包围。 解体思路:这是一道标准的广度优先搜索题,可以尝试用递归的方法或者非递归的方法。比较重要的一点就是要进行边界检查:因为网格是给定的,所以在BFS过程中要保证每个节点都是有效没有越界的。 ...

玉米味土豆片 2739

RK3588开发板量产前必做:24小时DDR压力测试到底在测什么?(附ArmSoM-W3测试脚本解析)

本文深入解析RK3588开发板量产前的24小时DDR压力测试,揭示其核心价值与技术原理。通过memtester、stressapptest和变频测试的组合使用,全面验证DDR内存稳定性。特别介绍ArmSoM-W3测试脚本的创新设计,包括并行测试架构和异常熔断机制,为开发者提供可靠的量产测试方案。

weixin_30325487的博客 454

LeetCode刷题笔记——DFS(岛屿问题-200,695)-Go语言

LeetCode刷题笔记——DFS(岛屿问题-200,695)-Go语言 200. 岛屿数量 中等 给你一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维网格,请你计算网格中岛屿的数量。 岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。 此外,你可以假设该网格的四条边均被水包围。 示例 1: 输入:grid = [ ["1","1","1","1","0"], ["1","1","0","1","0"], ["1","1","0","0","0"], ["0"

qq_22328011的博客 218

VCSA 6.7证书更新全流程指南:从故障诊断到完整替换

本文详细介绍了VCSA 6.7证书更新的全流程,包括故障诊断、证书替换操作步骤及常见问题解决方案。通过使用官方脚本和证书管理器,帮助管理员快速解决证书过期问题,确保vCenter系统的稳定运行。特别强调了STS证书修复和全量证书重置的关键步骤,适用于vcsa6.7环境下的证书管理需求。

weixin_42634811的博客 450

MS17-010(Eternal blue永恒之蓝)漏洞利用+修复方法

msf永恒之蓝漏洞复现过程以及修复建议

记录学习 8506

Leetcode—200. 岛屿数量【中等】

本文介绍了LeetCode第200题"岛屿数量"的Go语言解法。通过深度优先搜索(DFS)算法遍历二维网格,将相连的'1'(陆地)标记为已访问,每次发现新岛屿时计数器加1。代码实现简洁高效,时间复杂度为O(mn)。运行结果验证了算法的正确性。作者表示将持续更新算法题解,并邀请读者点赞关注支持。该解法适用于处理矩阵中的连通区域问题,是典型的图遍历应用场景。

Atticus的博客 111

MoveIt2项目想换掉KDL求解器?试试这个trac_ik插件(附源码编译避坑指南)

本文详细介绍了如何在MoveIt2项目中用trac_ik插件替代KDL求解器,提升机械臂运动学求解的效率和成功率。内容涵盖环境准备、源码编译避坑、项目集成及性能调优,特别适合需要高精度控制的协作机械臂应用场景。通过实测数据对比,trac_ik在求解时间和奇异点处理上显著优于传统KDL求解器。

weixin_30730053的博客 692

【LeetCode】200、岛屿数量

若遇到未访问过的陆地则数量++, 并延展此块陆地的最大边界。

呆呆的猫的博客 1274

10分钟搞定小红书爆款笔记爬取!Selenium模拟登录+数据解析全流程,新手也能落地

小红书爬虫实战的核心,是**“模拟真人操作+解析结构化数据”**——Selenium解决了动态页面和登录的问题,lxml解决了数据提取的问题,pandas解决了数据存储的问题。新手学爬虫不用一开始就啃复杂的反爬机制,先从这类“可见即可爬”的场景入手,掌握“模拟操作→数据解析→数据保存”的全流程,再逐步叠加异常处理、批量爬取、反爬应对等功能。需要注意的是:爬取数据仅用于个人学习和研究,不得用于商业用途,且需遵守小红书的用户协议,不要过度爬取导致服务器压力。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1728

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

leetcode200. 岛屿数量

给定一个由'1'(陆地)和 '0'(水)组成的的二维网格,计算岛屿的数量。一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地连接而成的。你可以假设网格的四个边均被水包围。 示例 1: 输入: 11110 11010 11000 00000 输出:1 示例2: 输入: 11000 11000 00100 00011 输出: 3 思路:深搜入门题。 对所有位置进行dfs: ...

少说,多做。 4032

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

LeetCode 200:岛屿数量 Number of Islands

题目: 给定一个由 '1'(陆地)和 '0'(水)组成的的二维网格,计算岛屿的数量。一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地连接而成的。你可以假设网格的四个边均被水包围。 Given a 2d grid map of '1's (land) and '0's (water), count the number of islands. An island is surrounded...

爱写Bug 497

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Leetcode: NO.200 岛屿数量

题目 题目链接:https://leetcode-cn.com/problems/number-of-islands 给你一个由 '1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量。 岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。 此外,你可以假设该网格的四条边均被水包围。 示例 1: 输入: 11110 11010 11000 00000 ...

泛泛之素 557

LeetCode——200.岛屿数量

1深搜解法 2.广搜解法

weixin_44750790的博客 392

【忍者算法】一杯咖啡时间,带你玩转LeetCode热题:LeetCode 200 岛屿数量

👋 大家好,我是忍者算法。今天我们要聊的这道题,在谷歌、微软、字节的面试中经常出现。它不只是考察代码能力,更是在测试你对搜索算法的理解深度。

忍者算法的博客 454

【LeetCode 热题100】BFS/DFS 实战:岛屿数量 & 腐烂的橘子(力扣200 / 994 )(Go语言版)

两题对比与解题要点: 岛屿数量(200): 关键:DFS/BFS遍历连通块并标记访问 方法:从每个未访问的'1'开始遍历,统计连通块数量 时间复杂度:O(m×n) 腐烂的橘子(994): 关键:多源BFS层级扩散 方法:初始队列加入所有腐烂橘子,逐层感染新鲜橘子 注意:需统计初始新鲜橘子数量 共同点: 二维网格遍历 需要标记访问状态 使用DFS/BFS解决问题 两题展示了图遍历的典型应用场景,是掌握基本搜索算法的经典题目。

小韩的博客 904
上一篇: leetcode 406. 根据升高重建队列 golang实现
下一篇: leetcode 215. 数组中的第K个最大元素 golang实现
tzh_linux
博客等级 码龄12年 12粉丝 117原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值