【华为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.mzph.cn/news/232629.shtml

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

相关文章

未来医疗的新希望:人工智能与智能器官的奇妙融合

导言 人工智能技术的不断演进在医疗领域掀起了一场革命。随着智能器官与人工智能的深度融合&#xff0c;虽然医学领域迎来了前所未有的机遇&#xff0c;但同时也伴随着一系列潜在的问题与挑战。本文将深入探讨人工智能如何与智能器官相互融合&#xff0c;为医学带来新的治疗可能…

Vue--第十天

终极实战----大事件项目 1.简介&#xff1a; 2.创建项目&#xff1a; 1.创建&#xff08;159-163&#xff09;&#xff1a; 还是对着视频操作吧 2.路由&#xff1a; 3.element Plus: 导入element Plus 后不需要再导入插件配置&#xff0c;就连组件导入也不用 4.pinia构建用…

视频号小店如何搭建团队?

我是电商珠珠 在视频号小店内&#xff0c;最适合发展的就是企业店。对于商家来说&#xff0c;前期需要办理企业的营业执照&#xff0c;然后再进行入驻。 企业店的发展潜力比较大&#xff0c;个体店只适合达人去玩。但是对于开店之后的团队搭建问题&#xff0c;有很多人不知道…

【二分查找】35.搜索插入位置

题目 法1&#xff1a;二分查找 基础方法&#xff0c;必须掌握&#xff01; class Solution {public int searchInsert(int[] nums, int target) {if (nums.length 0) {return 0;}int left 0, right nums.length - 1, mid 0;while (left < right) {mid left (right …

nginx部署vue项目

nginx部署vue 解决nginx中vue项目刷新报404问题解决nginx转发后端服务隐藏部分url访问url路径/prod-api/api经过nginx反向代理后&#xff0c;到达后端服务的实际url地址为/api。 解决nginx中vue项目刷新报404问题 location / { …

论文阅读——Painter

Images Speak in Images: A Generalist Painter for In-Context Visual Learning GitHub - baaivision/Painter: Painter & SegGPT Series: Vision Foundation Models from BAAI 可以做什么&#xff1a; 输入和输出都是图片&#xff0c;并且不同人物输出的图片格式相同&a…

券商期权手续费现在最低多少钱一张?怎么调低最方便

券商期权手续费是指您在证券公司开设期权账户并进行期权交易时&#xff0c;需要向券商支付的费用。券商期权手续费主要包括以下三个部分&#xff1a; 中国结算费用&#xff1a;这是中国证券登记结算有限责任公司向期权交易者收取的费用&#xff0c;固定为每张合约0.3元&#x…

智能优化算法应用:基于算术优化算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于算术优化算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于算术优化算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.算术优化算法4.实验参数设定5.算法结果6.…

关于iframes的嵌套问题

1.检测iframes的嵌套方式一 if (self.frameElement && self.frameElement.tagName "IFRAME") {alert(‘在iframe中’); }2.检测iframes的嵌套方式二 if (window.frames.length ! parent.frames.length) {alert(‘在iframe中’); }3.检测iframes的嵌套方式…

Macbook 系统时间异常问题

现象 忘记充电&#xff0c;电量耗尽关机&#xff0c;开机后时间不对&#xff0c;开启自动对时&#xff0c;时间会变成上个月的一天&#xff0c;系统更新后问题依旧&#xff0c;每次出现问题都需要手动调整。 解决方法验证 删除 /var/db/timed/com.apple.timed.plist删除 /et…

【STM32入门】4.3旋转编码器计次

1.旋转编码器原理 旋转编码器旋转的时候A、B两个引脚会产生相位差90度的方波&#xff0c;这个地方要尤其注意&#xff1a; 1.方波的相位差决定了中断触发方式&#xff0c;是上升沿还是下降沿。 2.方波的相位差决定了判断逻辑。 逻辑&#xff1a; 1.A引脚的上升沿对应B引脚…

【转载】【Unity】WebSocket通信

1 前言 Unity客户端常用的与服务器通信的方式有socket、http、webSocket。本文主要实现一个简单的WebSocket通信案例&#xff0c;包含客户端、服务器&#xff0c;实现了两端的通信以及客户端向服务器发送关闭连接请求的功能。实现上没有使用Unity相关插件&#xff0c;使用的就是…

【QT】解决QTableView鼠标点击合并单元格高亮显示问题

问题 正常显示 鼠标单击时只会选中当前行 异常显示 解决方案 在操作之前清除单元格合并&#xff0c;然后再合并单元格&#xff1b; 合并单元格是好的&#xff0c;说明合并没有问题&#xff0c;所以最简单的办法就是将单元格的状态恢复到初始的时候&#xff0c;在进行操作&…

maven构建单个模块,遇到错误:Could not find the selected project in the reactor

mvn install -pl modulename -am -pl 参数用于指定要构建的子模块&#xff0c;可以通过指定子模块的 artifactId 或者模块路径来指定。在命令中使用 -pl my-submodule 表示只构建名为 my-submodule 的子模块。 -am 参数用于自动构建依赖的模块。如果当前构建的模块依赖于其他…

bottom-up-attention-vqa-master 成功复现!!!

代码地址 1、create_dictionary.py 建立词典和使用预训练的glove向量 &#xff08;1&#xff09;create_dictionary() 遍历每个question文件取出所关注的question部分&#xff0c;qs 遍历qs&#xff0c;对每个问题的文本内容进行分词&#xff0c;并将分词结果添加到字典中&…

LabVIEW开发自动驾驶的双目测距系统

LabVIEW开发自动驾驶的双目测距系统 随着车辆驾驶技术的不断发展&#xff0c;自动驾驶技术正日益成为现实。从L2级别的辅助驾驶技术到L3级别的受条件约束的自动驾驶技术&#xff0c;车辆安全性和智能化水平正在不断提升。在这个过程中&#xff0c;车辆主动安全预警系统发挥着关…

Ubuntu基础操作和使用指南

Ubuntu基础操作和使用指南 Ubuntu是一款流行的开源操作系统&#xff0c;广泛应用于个人电脑、服务器和云计算环境。本文将介绍Ubuntu的基础操作和使用&#xff0c;帮助读者更好地使用这个操作系统。 1. 安装和设置 首先&#xff0c;你需要安装Ubuntu。你可以从Ubuntu官方网站…

LDAP的介绍以及JAVA使用LdapTemplate来进行AD域的操作

一、概念介绍 1.1 LDAP LDAP&#xff08;轻型目录访问协议&#xff09;是一种用于访问和维护分布式目录服务的开放标准协议。LDAP最初是从X.500标准中派生出来的&#xff0c;但相比于X.500&#xff0c;LDAP更加简化和灵活。LDAP协议定义了客户端和服务器之间进行通信的规范&a…

WebMvcConfigurer接口详解及使用方式(Spring-WebMvc)

简介 如下图所示WebMvcConfigurer是spring-webmvc jar包下的一个接口&#xff0c;spring-webmvc jar包又来源于spring-boot-starter-web&#xff0c;所以要使用WebMvcConfigurer要引入spring-boot-starter-web依赖。WebMvcConfigurer接口提供了常用的web应用拦截方法。通过实现…