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

【华为OD题库-097】最大岛屿体积-java

题目

题目描述
给你一个由大于0的数(陆地)和0(水)组成的的二维网格,请你计算网格中最大岛屿的体积。陆地的数表示所在岛屿的体积。岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。
此外,你可以假设该网格的四条边均被水包围。
输入描述
第一行是二维网格的宽和高。后面几行是二维网格。
输出描述
输出岛屿的最大体积。
样例
输入
5 5
0 1 1 0 0
0 1 1 0 0
0 0 0 0 0
0 0 1 2 3
0 0 1 3 9
输出
19

思路

dfs递归处理即可得到每个岛屿的体积,最后返回最大体积即可

题解

package hwod;import java.util.Scanner;public class MaxIslandVolume {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int m = sc.nextInt();int n = sc.nextInt();int[][] grids = new int[m][n];for (int i = 0; i < m; i++) {for (int j = 0; j < n; j++) {grids[i][j] = sc.nextInt();}}System.out.println(maxIslandVolume(grids));}private static int[] x_axis = new int[]{1, 0, -1, 0};private static int[] y_axis = new int[]{0, 1, 0, -1};private static int area;private static int maxIslandVolume(int[][] grids) {int res = Integer.MIN_VALUE;int m = grids.length;if (m == 0) return 0;int n = grids[0].length;int[] used = new int[m * n];for (int i = 0; i < m; i++) {for (int j = 0; j < n; j++) {if (grids[i][j] != 0 && used[i * n + j] == 0) {area = 0;recur(grids, i, j, used);res = Math.max(area, res);}}}return res;}private static void recur(int[][] grids, int i, int j, int[] used) {int m = grids.length, n = grids[0].length;area += grids[i][j];used[i * n + j] = 1;for (int k = 0; k < 4; k++) {int nx = i + x_axis[k];int ny = j + y_axis[k];if (nx >= 0 && nx < m && ny >= 0 && ny < n && used[nx * n + ny] != 1 && grids[nx][ny] != 0) {recur(grids, nx, ny, used);}}}
}

推荐

如果你对本系列的其他题目感兴趣,可以参考华为OD机试真题及题解(JAVA),查看当前专栏更新的所有题目。

http://www.lryc.cn/news/263048.html

相关文章:

  • HTML中边框样式、内外边距、盒子模型尺寸计算(附代码图文示例)【详解】
  • drf入门规范
  • 【微服务】springboot整合minio详解
  • 减速机振动相关标准 - 笔记
  • 【matlab】MATLAB 中的标量运算及实例
  • java简易制作-王者荣耀游戏
  • 手撕分布式缓存---多节点的调取
  • C/C++编程中的算法实现技巧与案例分析
  • 干货分享 | 如何在TSMaster中对常用总线报文信号进行过滤?
  • k8s链接数据库故障Waiting for table metadata lock
  • 数字经济如何驱动企业高质量发展? ——核心机制、模式选择与推进路径
  • 机器学习——支持向量机
  • mq的作用
  • AUTOSAR组织引入了Rust语言的原因是什么?有哪些好处?与C++相比它有什么优点?并推荐一些入门学习Rust语言链接等
  • 基于PyCharm实现串口GUI编程
  • 【1.8计算机组成与体系结构】磁盘管理
  • 1663:【 例 1】取石子游戏 1
  • Django去访问web api接口Object of type Session is not JSON serializable
  • 每日一题,二维平面
  • 【jupyter notebook】jupyter notebook 调用另一个jupyter notebook 的函数
  • Linux--学习记录(3)
  • 自然语言处理阅读第一弹
  • Spring Boot+Mybatis设置sql日志打印
  • 步进电机电流设置的3种方法
  • uniapp-使用返回的base64转换成图片
  • 有机面条市场分析:到2026 年的复合年增长率为 5.4%
  • 广州设计周落幕|值得被歌颂的奥力斯特岩板
  • WTN6系列语音芯片:PWM与DAC音频输出在PCB设计中的优势
  • 设计模式 原型模式 与 Spring 原型模式源码解析(包含Bean的创建过程)
  • Docker介绍,Docker安装