【华为OD题库-077】荒岛求生-Java

题目

有一个荒岛,只有左右两个港口,只有一座桥连接这两个港口,现在有一群人需要从两个港口逃生,有的人往右逃生,有的往左逃生,如果两个人相遇,则PK,体力值大的能够打赢体力值小的,体力值相同则同归干尽,赢的人才能继续往前逃生,并减少相应的体力。
输入描述
一行非0整数,用空格隔开,正数代表向右逃生,负数代表向左逃生
输出描述
最终能够逃生的人数
示例1:
输入
5 10 8 -8 -5
输出
2
说明
8与-8相遇,同归于尽,10遇到-5,打赢并减少5点体力,最终逃生的为5,5,均从右侧港口逃生,输出2

思路

类似leetcode:735. 小行星碰撞

正数代表向右,负数代表向左,必须先正后负才有可能相遇,-1,1这样的先负后正的数据则不会相遇。
直接使用栈模拟,遍历输入的数组nums:
当栈顶元素为正,当前元素为负数时,考虑以下三种情况

5 6 7, -4 。当前元素绝对值较小,上一个移出,准备加入当前元素3(7-4),当前元素为正,结束循环
5 6 7,-8。当前元素绝对值较大,上一个移出,准备加入-1(并非真加入,此时依然满足栈顶为正,当前为负的条件,继续循环),结束循环时,栈顶元素为5,准备加入5。
5 6 7,-7,当前元素绝对值和栈顶绝对值相等,准备加入0,当前元素非负,结束循环

在上面三种情况中,只有准备加入的元素是0时,不用加入,其他均加入栈顶即可
stack中最后存放的能够逃生的人,返回它的长度就代表成功逃生人数

题解

package hwod;import java.util.Arrays;
import java.util.LinkedList;
import java.util.Scanner;public class DesertIslandSurvival {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int[] nums = Arrays.stream(sc.nextLine().split(" ")).mapToInt(Integer::parseInt).toArray();System.out.println(desertIslandSurvival(nums));}private static int desertIslandSurvival(int[] nums) {LinkedList<Integer> stack = new LinkedList<>();for (int i = 0; i < nums.length; i++) {while (!stack.isEmpty() && stack.peekLast() > 0 && nums[i] < 0) {nums[i] += stack.removeLast();}if(nums[i]!=0) stack.addLast(nums[i]);}return stack.size();}
}

推荐

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/204835.shtml

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

相关文章

【JavaScript】中的相等性判断

JavaScript中的相等性判断 ——严格相等——宽松相等Object.is() 严格相等 两个被比较的值在比较前都不进行隐式转换 1 1 // false如果被比较的两个值类型相同&#xff0c;值相同&#xff0c;那么两个值相等。但存在特殊情况&#xff1a; 0 -0两个值都是 NaN时&#xff0…

彻底解决org.gradle.api.artifacts.DependencySubstitutions

需求背景 最近在使用android studio导入hbuilder的HBuilder-Integrate-AS工程时候报错&#xff0c;错误消息如下两种。 错误描述 第一种 Failed to notify dependency resolution listener. void org.gradle.api.artifacts.DependencySubstitutions$Substitution.with(org.g…

9.68亿美元!2024,美国重金押注量子科技

11月29日&#xff0c;美国众议院科学、空间和技术委员会通过了一项重要法案——《国家量子计划重新授权法案》。这项法案不仅将支持期限延长至2028财年&#xff0c;还将重点放在量子技术在现代场景中的应用上&#xff1b;标志着美国对这一可能定义未来技术格局的科学领域的承诺…

了解linux日志

本章主要介绍Linux中的日志管理 了解rsyslog是如何管理日志的 查看日志的方法 日志中记录了各种各样的问题&#xff0c;所以读取日志是检测并排除故障的一个重要方式&#xff0c;日志文 件默认放在/var/log目录下。不同的问题要读取不同的日志&#xff0c;例如&#xff0c;邮…

好用免费的AI换脸5个工具

在当今社会的发展中&#xff0c;人工智能&#xff08;Artificial Intelligence, AI&#xff09;扮演着关键的角色&#xff0c;其应用领域不断扩展。作为AI的一个分支&#xff0c;换脸技术近年来备受欢迎。这项技术使得将一个人的面部特征迁移到另一个人的照片或视频成为可能。除…

膜结构建筑:未来体育可持续发展的绿色引擎

随着城市化的飞速发展&#xff0c;现代建筑迫切需要创新性的解决方案&#xff0c;而膜结构建筑以其独特的设计理念和可持续性特点&#xff0c;正在成为未来城市发展的重要引擎。本文将深入探讨膜结构建筑在可持续城市发展中的关键作用&#xff0c;包括其在节能减排、资源有效利…

软著项目推荐 疫情数据分析与3D可视化 - python 大数据

文章目录 0 前言1 课题背景2 实现效果3 设计原理4 部分代码5 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 大数据全国疫情数据分析与3D可视化 该项目较为新颖&#xff0c;适合作为竞赛课题方向&#xff0c;学长非常推荐&#xff0…

探索正则可视化工具:让编程更直观、高效

导语&#xff1a;在当今的编程世界中&#xff0c;正则表达式已成为不可或缺的技能。然而&#xff0c;理解和编写正则表达式往往是一项具有挑战性的任务。为了降低门槛&#xff0c;提高编程效率&#xff0c;正则可视化工具应运而生。 一、正则表达式的简介与历史 正则表达式&a…

Python小案例:while练习题

目录 while练习题&#xff1a;1、存款多少年能翻倍2.小球坠落长度计算3、猴子吃桃4、计算&#xff1a;1-23-4...99-100的和 while练习题&#xff1a; 1、存款多少年能翻倍 1万本金&#xff0c;年利息&#xff1a;0.0325&#xff0c;求连本带息多少年能翻倍 解析&#xff1a;…

AI烟火识别智能视频分析系统解决方案

引言 随着城市化进程的加快和高科技的迅猛发展&#xff0c;传统的消防系统逐渐显露出局限性。在这种背景下&#xff0c;AI烟火识别智慧消防解决方案应运而生&#xff0c;它融合了最新的AI技术&#xff0c;旨在提高火灾的预防、检测、应对和控制能力&#xff0c;保护人民生命财…

mysql的组合查询

mysql的组合查询 1、mysql的内连接查询 在 MySQL 中&#xff0c;内连接&#xff08;INNER JOIN&#xff09;是一种根据两个或多个表之间的匹配条件&#xff0c;将多个表中的数据进行联接的操作。内连接只返回符合联接条件的行&#xff0c;而不会返回未匹配的行。 内连接的语…

C# WPF上位机开发(抽奖软件)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 每到年末或者是尾牙的时候&#xff0c;很多公司都会办一些年终的清楚活动&#xff0c;感谢员工过去一年辛苦的付出。这个时候&#xff0c;作为年会…

二叉树题目:翻转二叉树以匹配前序遍历

文章目录 题目标题和出处难度题目描述要求示例数据范围 解法思路和算法代码复杂度分析 题目 标题和出处 标题&#xff1a;翻转二叉树以匹配前序遍历 出处&#xff1a;971. 翻转二叉树以匹配前序遍历 难度 5 级 题目描述 要求 给定一个二叉树的根结点 root \texttt{roo…

单电源、轨到轨输入输出、高精度运放MS8551/8552/8554

产品简述 MS8551/8552/8554 是输入输出轨到轨的高精度运算放大器&#xff0c;它 有极低的输入失调电压和偏置电流&#xff0c;单电源电压范围为 1.8V 到 5V 。 轨到轨的输入输出范围使 MS8551/8552/8554 可以轻松地放大高 电平和低电平的传感信号。所有特性使得 MS8…

「薄荷绿」风电智慧运营,有效提高运营效率和能源利用率

随着能源需求的不断增加和全球变暖的加剧&#xff0c;人们对可再生能源的依赖程度不断提高。其中&#xff0c;风能作为一种可再生能源&#xff0c;其清洁、环保、无污染等特点备受青睐&#xff0c;其发展也越来越受到政府和企业的关注。然而&#xff0c;由于风能的不稳定性和不…

项目管理:为什么项目计划必不可少

项目管理计划定义了如何执行、监督和控制项目。项目计划让我们准确地知道在项目的每个阶段应该做什么&#xff0c;在哪里分配资源和时间&#xff0c;以及在事情超出计划或超出预算时要注意什么。 为了项目中获得成功&#xff0c;管理者需要在前期创建一个项目计划&#xff0c…

如何在 PyQt 中实现异步数据库请求

需求 开发软件的时候不可避免要和数据库发生交互&#xff0c;但是有些 SQL 请求非常耗时&#xff0c;如果在主线程中发送请求&#xff0c;可能会造成界面卡顿。这篇博客将会介绍一种让数据库请求变得和前端的 ajax 请求一样简单&#xff0c;且不会阻塞界面的异步请求方法。 实…

代码随想录算法训练营第五十八天 | 793.每日温度,496.下一个更大元素 I

目录 739. 每日温度 496.下一个更大元素 I 739. 每日温度 题目链接&#xff1a;739. 每日温度 求某数右边最近的大于自己的数&#xff0c;采用单调栈的方法。日期早的数先进栈&#xff0c;每次遍历到某一天就将该天温度依次与栈中各天温度进行比较&#xff0c;若大于栈中温…

hive映射es表任务失败,无错误日志一直报Task Transitioned from NEW to SCHEDULED

一、背景 要利用gpt产生的存放在es种的日志表做统计分析&#xff0c;通过hive建es的映射表&#xff0c;将es的数据拉到hive里面。 在最初的时候同事写的是全量拉取&#xff0c;某一天突然任务报错&#xff0c;但是没有错误日志一直报&#xff1a;Task Transitioned from NEW t…

Nature Communications 高时空分辨率的机器人传感系统及其在纹理识别方面的应用

前沿速览&#xff1a; 现有的触觉传感器虽然可以精确的检测压力、剪切力和应变等物理刺激&#xff0c;但还难以像人类手指一样通过滑动触摸&#xff0c;同时获取静态压力与高频振动来实现精确的纹理识别。为了解决这一问题&#xff0c;来自南方科技大学的郭传飞团队提出了衔接…