DFS专题:力扣岛屿问题(持续更新)

    DFS专题:力扣岛屿问题

一、岛屿数量

题目链接: 200.岛屿数量

题目描述

在这里插入图片描述

代码思路

使用深度优先搜索,对每一个网格点进行判断,如果为未搜索过的’1’,则使岛屿数加一,并将与其相连的‘1’都进行标记,确保每次搜索到1都是一个新的岛屿。

代码纯享版

class Solution {public int numIslands(char[][] grid) {int len = grid.length; int wide = grid[0].length; int sum = 0;for(int i = 0; i < len; i++){for(int j = 0; j < wide; j++){if(grid[i][j] == '1'){sum++;dfs(grid, i, j);}}}return sum;}void dfs(char[][] grid, int i, int j){int len = grid.length;int wide = grid[0].length;if(i < 0 || i >= len || j < 0 || j >= wide || grid[i][j] != '1'){return;}grid[i][j] = '2'; dfs(grid, i - 1, j);dfs(grid, i + 1, j);dfs(grid, i, j - 1);dfs(grid, i, j + 1);}
}

代码逐行解析版

class Solution {public int numIslands(char[][] grid) {int len = grid.length; //岛屿长度int wide = grid[0].length; //岛屿宽度int sum = 0; //岛屿总数//遍历岛屿每一个位置for(int i = 0; i < len; i++){for(int j = 0; j < wide; j++){ if(grid[i][j] == '1'){ //如果为陆地sum++; //岛屿总数加一dfs(grid, i, j); //dfs}}}return sum;}//深度搜索所有连接在一起的'1',将其变为'2'//grid[i][j] == '0' 水//grid[i][j] == '1' 未搜索的陆地//grid[i][j] == '2' 已搜索的陆地void dfs(char[][] grid, int i, int j){int len = grid.length;int wide = grid[0].length;//排除2种情况//1.超出网格范围的搜索//2.不是未搜索的陆地if(i < 0 || i >= len || j < 0 || j >= wide || grid[i][j] != '1'){ return;}grid[i][j] = '2'; //将grid[i][j] == '1'的情况标记为'2'//上下左右四个方位的搜索dfs(grid, i - 1, j);dfs(grid, i + 1, j);dfs(grid, i, j - 1);dfs(grid, i, j + 1);}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/620379.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

企业为什么要做等级保护

一、等级保护是我国关于网络安全的基本政策 《国家信息化领导小组关于加强信息安全保障工作的意见》&#xff08;中办发[2003]27 号&#xff0c;以下简称“27 号文件”&#xff09;明确要求我国信息安全保障工作实行等级保护制度,提出“抓紧建立信息安全等级保护制度&#xff…

区块链开发者大会圆满结束:记Hack.Summit() 2024的合作机构群像

Hack.Summit() 2024 区块链开发者大会于4月9日至10日在香港数码港隆重举行。经过两天的精彩交流与深入探讨&#xff0c;本次大会圆满落下帷幕&#xff0c;不仅汇聚了全球区块链领域的顶尖人才和机构&#xff0c;还展示了最新的技术成果和创新应用&#xff0c;为区块链行业的发展…

Ubuntu 23.10.1 nginx源码安装

注&#xff1a;以下所有命令均在root管理员模式下&#xff0c;若不是&#xff0c;请在所有命令前加sudo 1、安装依赖库 1.1、安装gcc g的依赖库 apt-get install build-essential apt-get install libtool1.2、安装pcre依赖库 apt-get update apt-get install libpcre3 lib…

接口自动化框架设计之参数传递(超详细)

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 点击文末小卡片 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 在我们设计自动化测试框架的时候&#xff0c;我们会经常将测试数据保存在外部的文件&#xff08…

C#值传递和引用传递,ref和out关键字,装箱和拆箱

C#值传递和引用传递 1.值传递和引用传递 值传递&#xff1a;值传递时&#xff0c;系统首先为被调用方法的形参分配内存空间&#xff0c;并将实参的值按位置一一对应复制给形参&#xff0c;被调用方法中形参得任何改变都不会影响到相应的实参。 引用传递时&#xff1a;系统不是…

Python-GEE遥感云大数据分析、管理与可视化及多领域案例实践应用

随着航空、航天、近地空间遥感平台的持续发展&#xff0c;遥感技术近年来取得显著进步。遥感数据的空间、时间、光谱分辨率及数据量均大幅提升&#xff0c;呈现出大数据特征。这为相关研究带来了新机遇&#xff0c;但同时也带来巨大挑战。传统的工作站和服务器已无法满足大区域…

Docker Desktop修改镜像存储路径 Docker Desktop Start ... 卡死

1、CMD执行wsl -l -v --all 2、Clean / Purge data 3、导出wsl子系统镜像: wsl --export docker-desktop D:\docker\wsl\distro\docker-desktop.tar wsl --export docker-desktop-data D:\docker\wsl\data\docker-desktop-data.tar4、删除现有的wsl子系统&#xff1a; wsl -…

江新安教授受邀金佰利进行《研发创新与创新思维》培训

近日&#xff0c;科济管线创始人江新安教授受邀金佰利为金佰利全国研发团队进行《研发创新与创新思维》培训授课。创新思维的两种思维形式——非逻辑思维和逻辑思维及其训练的主要方法。创新思维的培养&#xff0c;对于克服思维定势&#xff0c;提供创新方法&#xff0c;可以发…

阿斯达年代记三强争霸开服时间+官网地址+预约下载安装教程分享

阿斯达年代记国际服&#xff0c;游戏分为三个势力&#xff0c;分别是阿斯达、亚高和不罚者&#xff0c;每个玩家都必须选择一个势力&#xff0c;而每个势力每周将会诞生一名势力族长&#xff0c;将会从五名候选人中投票产生&#xff0c;想要进入候选人名单&#xff0c;必须每天…

突破编程_前端_SVG(ellipse 椭圆形)

1 ellipse 元素的基本属性和用法 ellipse 元素用于创建椭圆形状。它具有一系列的基本属性&#xff0c;允许自定义椭圆的外观和位置。以下是一些 ellipse 元素的基本属性和用法&#xff1a; &#xff08;1&#xff09;基本属性 cx 和 cy&#xff1a;这两个属性定义了椭圆中心…

HCIP-Datacom H12-831 题库补充(4/12)

2024年 HCIP-Datacom&#xff08;H12-831&#xff09;最新题库&#xff0c;完整题库请扫描上方二维码&#xff0c;持续更新。 以下关于OSPF Sham Link的描述&#xff0c;错误的是哪一项&#xff1f; A&#xff1a;为了使VPN流量通过MPLS VPN骨干网转发&#xff0c;Sham Link的路…

华火电焰灶全国经销商加盟_优势怎么样_费用多少_华焰天下

随着科技的不断进步&#xff0c;电焰灶作为现代厨房的重要设备&#xff0c;其市场需求持续增长。华火电焰灶&#xff0c;凭借其独特的技术优势和广泛的市场前景&#xff0c;吸引了众多投资者的目光。本文将从华火电焰灶的优势、加盟费用以及华焰天下的机遇三个方面&#xff0c;…