当前位置: 首页 > 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.cnnetsun.cn/news/39741.html

相关文章:

  • 视频生成技术革命:LightVAE如何重塑创作效率边界
  • WordPress 专业建筑行业公司网站主题模板 – Constructo v5.0.0
  • noVNC剪贴板同步完全指南:解决远程复制粘贴难题
  • FusionSpec投机推理:让大模型推理速度飙升的优化策略
  • WPS VBA 7.1插件技术实现与自动化办公解决方案深度解析
  • Qwen3-VL-4B-Instruct-FP8:如何用40亿参数重塑企业级多模态AI生态?
  • Logto身份认证系统入门指南:从零构建安全登录体系
  • 【Java毕设全套源码+文档】基于Java的教学评价管理系统的设计与实现(丰富项目+远程调试+讲解+定制)
  • 【Java毕设全套源码+文档】基于Java的教务管理系统设计与实现(丰富项目+远程调试+讲解+定制)
  • 7、自定义报告处理器:Puppet 中的数据处理与监控
  • 8、Puppet 报告处理与 PuppetDB 探索
  • 14、创建自定义仪表盘:从基础到趋势分析
  • 人工智能专利投资机遇:2024年关键趋势与战略布局
  • 终极指南:如何利用FlatBuffers构建高性能数据交换系统
  • 基于springboot + vueOA校务管理系统(源码+数据库+文档)
  • Notepad4 文本编辑器:从零开始搭建高效编程环境
  • 打卡信奥刷题(2531)用C++实现信奥 P2024 [NOI2001] 食物链
  • 如何快速掌握Step1X-3D:新手入门完整指南
  • Facebook iOS SDK实战指南:从零构建社交应用
  • C++ Vector在实际项目中的5个典型应用场景
  • 命令行效率革命:用Shell工具实现API文档自动化生成
  • 3步精通微信小程序逆向分析:unwxapkg资源提取实战指南
  • 45、Red Hat Linux 网络安全与服务管理全攻略
  • 5分钟用AI搭建EFI网络启动原型
  • Konva.js拖拽功能实战技巧:构建高效Canvas交互界面
  • DeepSeek-V3:6710亿参数开源模型如何重塑企业AI格局
  • CodeBlocks开发效率翻倍:AI对比传统编程方式
  • Folo信息浏览器:彻底改变你获取信息的方式
  • 10秒生成商用级3D模型:混元3D如何颠覆传统创作?
  • 5分钟用AI生成支持特殊类型的深拷贝工具函数