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

LeetCode热题--200. 岛屿数量--中等

1. 题目

给你一个由 ‘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 = [
[‘1’,‘1’,‘0’,‘0’,‘0’],
[‘1’,‘1’,‘0’,‘0’,‘0’],
[‘0’,‘0’,‘1’,‘0’,‘0’],
[‘0’,‘0’,‘0’,‘1’,‘1’]
]
输出:3

2. 题解

class Solution {public int numIslands(char[][] grid) {int count = 0;for(int i = 0; i < grid.length; i++) {for(int j = 0; j < grid[0].length; j++) {if(grid[i][j] == '1'){bfs(grid, i, j);count++;}}}return count;}private void bfs(char[][] grid, int i, int j){Queue<int[]> list = new LinkedList<>();list.add(new int[] { i, j });while(!list.isEmpty()){int[] cur = list.remove();i = cur[0]; j = cur[1];if(0 <= i && i < grid.length && 0 <= j && j < grid[0].length && grid[i][j] == '1') {grid[i][j] = '0';list.add(new int[] { i + 1, j });list.add(new int[] { i - 1, j });list.add(new int[] { i, j + 1 });list.add(new int[] { i, j - 1 });}}}
}

3. 解析

出自:200. 岛屿数量(DFS / BFS)

public int numIslands(char[][] grid) 是主函数,它接收一个二维字符数组作为输入参数。这个数组代表了一个地图,其中’0’表示水,'1’表示陆地。这个函数的目的是找出地图上有多少个独立的岛屿。

对于grid中的每一个单元格,代码都会检查它是否为’1’(代表陆地)。如果是,则会调用bfs(grid, i, j)函数来找出这个岛屿的所有连通单元格。

在numIslands函数中,每当找到一个新的’1’时,计数器count就会增加一。所以,count就是地图上独立岛屿的总数。

private void bfs(char[][] grid, int i, int j)是一个辅助函数,它接收一个二维字符数组和两个整数作为参数。这个函数使用BFS算法来找出位于位置(i,j)的岛屿的所有连通单元格,并将这些单元格标记为’0’,表示已经访问过。

在bfs(grid, i, j)函数中,首先创建一个队列list来存储下一步要处理的单元格。然后进入一个循环,只要列表不空,就会一直进行下去。在这个循环中,它会取出列表中的第一个单元格(使用remove方法),并检查这个单元格是否在地图范围内并且为’1’,如果是,就将这个单元格标记为’0’,然后将其上下左右的邻居加入到列表中。

最后返回count,即表示陆地的独立岛屿数量。

这段代码主要使用了广度优先搜索算法来解决问题,通过遍历地图上的每个单元格并找出所有连通的单元格(代表一个岛屿)来计算独立岛屿的数量。

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

相关文章:

  • 营销型网站试运营调忧北京海淀房管局网站
  • 网站建设与制作与维护ppt网站百度排名怎么做快
  • SSM飞机售票管理系统63z52(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
  • [论文阅读] 人工智能 + 软件工程 | 当传统调试遇上LLM:CodeHinter为新手程序员打造专属辅助工具
  • 亚马逊网站做外贸网站是可以做的吗
  • Kimi推出全新Agent模式OK Computer,基于K2模型的端到端任务执行,已开启灰度测试
  • 用vs2010做网站视频教程高端网站制作报价
  • react-native集成PDF预览组件react-native-pdf
  • Dify笔记 知识库
  • 模板建站服务器网页打不开的解决方法
  • 女生做网站前台设置自动删除的wordpress
  • 苏州市吴江太湖新城建设局网站微信手机网站设计6
  • 单片机开发中的队列数据结构详解,队列数据结构在单片机软件开发中的应用详解,C语言
  • 邯郸网站推广wordpress 页面生成
  • 搭建本地代理服务器
  • USB4接口防护,ESD管与TVS管怎么选?-ASIM阿赛姆
  • LazyLLM部署日志
  • 祝贺职业教育网站上线网站的前端和后台
  • 第三人称:角色攻击
  • 怎么理解GO中的context
  • 国内永久免费建站哈尔滨网站设计有哪些步骤
  • 运动控制教学——5分钟学会样条曲线算法!(三次样条曲线,B样条曲线)
  • HTTP 错误 403.14 - Forbidden Web 服务器被配置为不列出此目录的内容——错误代码:0x00000000
  • 备案 多个网站上海网站制作建设是什么
  • 和的区别?
  • 【LLM LangChain】AgentExecutor 创建带工具的Agent+加入BufferMemory+支持多用户记忆 demos
  • 图书馆网站建设教程专业网站建设咨询
  • Qwen2.5 0.5b转换到iree上支持的文件
  • 做网站和平台多少钱网络营销seo是什么
  • Qt常用控件之QCalendarWidget