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

代码随想录 695.岛屿的最大面积

思路:

1.注意题目中的每座岛屿只能由水平方向和竖直方向相邻的陆地连接形成。

2.这题也是bfs、dfs的基础题目,就是搜索每个岛屿上“1”的数量,然后取一个最大的。

一、DFS:

附代码:

class Solution { public int maxAreaOfIsland(int[][] grid) { int res = 0; for(int i = 0;i < grid.length;i++){ for(int j = 0;j < grid[i].length;j++){ if(grid[i][j] == 1){ //发现新岛屿 res = Math.max(res,dfs(grid,i,j)); //将整个岛屿标记为已访问,统计岛屿面积并求最大岛屿面积 } } } return res; } private int dfs(int[][] grid,int i,int j){ if(i < 0 || j < 0 || i >= grid.length || j >= grid[i].length || grid[i][j] == 0){ return 0; } //当前节点 int count = 1; //将当前岛屿标记为已访问(沉没岛屿,改为0) grid[i][j] = 0; //向四个方向递归探索 count += dfs(grid,i - 1,j); count += dfs(grid,i + 1,j); count += dfs(grid,i,j + 1); count += dfs(grid,i,j - 1); return count; } }

二、BFS:

附代码:

class Solution { public int maxAreaOfIsland(int[][] grid) { int res = 0; for(int i = 0;i < grid.length;i++){ for(int j = 0;j < grid[0].length;j++){ if(grid[i][j] == 1){ res = Math.max(res,bfs(grid,i,j)); } } } return res; } private int bfs(int[][] grid,int i,int j){ int[] dx = {1,-1,0,0}; int[] dy = {0,0,1,-1}; LinkedList<int[]> queue = new LinkedList<>(); queue.add(new int[] {i,j}); grid[i][j] = 0; int count = 1; while(!queue.isEmpty()){ int[] cur = queue.remove(); for(int index = 0;index < 4;index++){ int nx = cur[0] + dx[index],ny = cur[1] + dy[index]; if(nx >= 0 && nx < grid.length && ny >= 0 && ny < grid[0].length && grid[nx][ny] == 1){ grid[nx][ny] = 0; count += 1; queue.add(new int[] {nx,ny}); } } } return count; } }
http://www.jsqmd.com/news/83271/

相关文章:

  • MotionGPT终极指南:用语言模型生成人类运动的完整方法
  • SenseVoice多语言语音识别:移动端轻量级AI语音理解解决方案
  • 电动平车厂家哪家好
  • 从零到架构师:我的系统设计书单进化之路
  • 5分钟快速上手postcss-cssnext:用明天的CSS语法开发今天
  • K-Diffusion 完全指南:3步掌握PyTorch扩散模型实战
  • 【MySQL】数据库表的操作 - 实践
  • Qwen3Guard-Gen-8B:重新定义多语言AI安全防护新范式
  • 打造你的第一个OpenUSD 3D世界:从零开始的场景构建完全指南
  • 从零到一:M3 Pro芯片完美驾驭CosyVoice语音合成的实战指南
  • Media Player Classic-HC硬件加速终极修复指南:告别卡顿轻松播放4K视频
  • 重新定义数据可视化:Charticulator的终极图表设计指南
  • llama.vim:让Vim编辑体验如虎添翼的智能补全神器
  • GitNext终极指南:OpenHarmony上最完整的Git可视化客户端体验
  • VirtualMotionCapture 完整使用指南:从入门到精通
  • 搜维尔科技:推进帕金森病研究:MANUS数据手套可捕捉细微的手部运动变化
  • DockPanel Suite 完整使用指南:构建专业级 WinForms 停靠界面
  • JMeter负载测试配置与结果分析实践指南
  • Atmosphere-NX 2168-0002错误代码:从诊断到修复的完整指南
  • Chromebook Linux音频终极修复指南:一键解决声音问题
  • 2025视觉AI效率革命:Swin Transformer如何重塑十大行业应用生态
  • OpenHarmony图像加载终极指南:5大降采样策略如何选择?
  • PiliPalaX完整使用指南:从新手到高手的进阶之路
  • 7个高效方法掌握Blender正则表达式搜索技巧
  • Qiskit量子编程实战指南:5分钟从零构建你的第一个量子电路
  • Phi-2模型实战指南:5步掌握27亿参数AI模型应用
  • 如何用AtomicServer打造高性能无头CMS:三步快速上手指南
  • 中后台开发的终极效率利器:Ant Design ProComponents完全指南
  • 基于微信小程序的直播带货商品数据分析系统的设计与实现
  • 估计一个三维结构的间距