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

LeetCode 200.岛屿数量

目录

题目:

题目描述:

题目链接:

思路:

核心思路:

思路详解:

代码:

Java代码:


题目:

题目描述:

题目链接:

200. 岛屿数量 - 力扣(LeetCode)

思路:

核心思路:

深搜 - dfs

思路详解:

题目核心语句:每座岛屿只能由水平方向/竖直方向上相邻的陆地连接形成

所以思路就是遍历二维网络的每一个位置,判断是陆地还是水。如果遍历到的是陆地,那么就从这块陆地开始不断以上下左右的方向往外寻找陆地进行拓展,拓展到的陆地还可以接着按照这个规则往外拓展。直到无法进行拓展为止,此时一开始遍历到的陆地再加上所有拓展到的陆地才算一个岛屿。

所以我们要定义dfs函数来实现,为了防止已经被拓展过的陆地被重复搜索,我们每次可以设置grip[x][y]='2'表示当前搜索到的陆地已经被拓展。而dfs的终止条件就是先进行边界判断,判断是否超出行和列,再判断是否是水或者是已经被拓展的陆地。最后在dfs函数中按照向上拓展,向下拓展,向左拓展,向右拓展的规则递归即可实现搜索完一整个岛屿的功能。

代码:

Java代码:

class Solution {private int ans;  //ans记录岛屿数量的结果private char[][] grid;  //按照题意定义二维字符数组gripprivate int row;  //row表示行数private int column;  //column表示列数public int numIslands(char[][] grid) {this.grid=grid;this.row=grid.length;this.column=grid[0].length;for(int i=0;i<row;i++)  //遍历grip的每一处{for(int j=0;j<column;j++){if(grid[i][j]=='1')  //如果遍历到陆地{ans++;  //岛屿数量加1dfs(i,j);  //深搜,从这块陆地按照指定规则不断向外拓展//该陆地再包括所有拓展到的陆地才算一个岛屿}}}return ans;}private void dfs(int x, int y)  //定义深搜函数dfs{//判断是否超出行与列的边界,再判断是否是水或者是已经被拓展过的陆地if(x<0||x>=row||y<0||y>=column||grid[x][y]=='0'||grid[x][y]=='2'){return;}grid[x][y]='2';  //设置为2表示该陆地已经被拓展过dfs(x-1,y);  //向上拓展dfs(x+1,y);  //向下拓展dfs(x,y-1);  //向左拓展dfs(x,y+1);  //向右拓展}
}

http://www.xdnf.cn/news/971461.html

相关文章:

  • 天猫官方认证TP服务商——品融电商代运营全链路解析
  • 无需安装!在线 SQL 数据库工具实战 :经典 SQL 语句案例
  • NY167NY171美光固态闪存NY176NY180
  • 《炒股进阶:MACD交易技术从入门到精通》速读笔记
  • Nature子刊|ChatNT:生物多模态LLM破壁者!统一DNA/RNA/蛋白质分析的对话式AI
  • JAVA中的多线程
  • 常见算法题目6 - 给定一个字符串,输出其最长的回文子串
  • F5 BIG IP show running config
  • 模型参数、模型存储精度、参数与显存
  • Postman参数化详解
  • leetcode_35.搜索插入位置
  • 如何查看电脑系统的初始安装时间?
  • 龙虎榜——20250610
  • 【沉浸式求职学习day53】【Spring】
  • MFC 第一章概述
  • 2025 Java 面试大全
  • 39.第二阶段x64游戏实战-封包-分析计数器
  • gro文件和top文件介绍,以及如何合并两个gro文件或两个top文件
  • 【论文解读】ReSearch:让LLM自主学习搜索
  • Qt进阶开发:动画框架的介绍和使用
  • Zynq multi boot及网口远程更新开发
  • Android Studio 问题:Android Studio 一直开在 Updating indexes
  • 【运维】【期末实训】网站简易搭建模拟
  • 核心机制:面向字节流
  • C++:std::is_convertible
  • <7>-MySQL内置函数
  • Python训练营-Day27-函数专题2:装饰器
  • Java如何权衡是使用无序的数组还是有序的数组
  • copilot基于 DeepSeek-R1 思路构建 VLA 自动驾驶强化学习系统
  • 华为云Flexus+DeepSeek征文|体验华为云ModelArts快速搭建Dify-LLM应用开发平台并创建联网大模型