华为OD刷题C卷 - 每日刷题36(剩余银饰的重量,最大坐标值、小明的幸运数)

1、(剩余银饰的重量):

这段代码是解决“剩余银饰的重量”的问题。它提供了一个Java类Main,其中包含main方法和getResult方法,用于计算经过一系列熔化过程后剩余银饰的重量。

main方法首先读取银饰的个数n,然后读取每个银饰的重量并存储到LinkedList中。接着,调用getResult方法并打印最终剩余银饰的重量。

getResult方法首先对银饰重量进行升序排序。然后,使用循环每次从列表末尾移除三个最重的银饰,并根据题目描述计算熔化后剩余的银饰重量。如果存在剩余,则将这个重量插入到已排序的列表中。这个过程一直重复,直到列表中的银饰数量少于三个。

最后,根据列表中的银饰数量,返回剩余银饰的重量。如果剩余两块,则返回较重的那块的重量;如果只剩下一块,则返回那块的重量;如果没有剩余,则返回0。

2、(最大坐标值、小明的幸运数):

这段代码是解决“最大坐标值、小明的幸运数”的问题。它提供了一个Java类Main,其中包含main方法和getMaxCoordinate方法,用于计算小明在游戏中达到的最大坐标值。

main方法首先读取指令的总数n,然后读取幸运数m和n个指令。接着,调用getMaxCoordinate方法并打印小明在游戏中达到的最大坐标值。

getMaxCoordinate方法首先进行异常检查,确保输入的幸运数和指令在合理的范围内。然后,使用一个ArrayList来存储小明每一步的坐标值。遍历指令序列,根据指令和幸运数更新当前坐标值,并将每一步的坐标值存储到列表中。

最后,对坐标值列表进行降序排序,并返回列表中的第一个元素,即小明达到的最大坐标值。

package OD367;import java.util.Collections;
import java.util.LinkedList;
import java.util.Scanner;/*** @description 剩余银饰的重量* @level 4* @score 100* @type 二分查找*//*** 题目描述* 有 N 块二手市场收集的银饰,每块银饰的重量都是正整数,收集到的银饰会被熔化用于打造新的饰品。* <p>* 每一回合,从中选出三块最重的银饰,然后一起熔掉。* <p>* 假设银饰的重量分别为 x 、y和z,且 x ≤ y ≤ z。那么熔掉的可能结果如下:* <p>* 如果 x == y == z,那么三块银饰都会被完全熔掉;* 如果 x == y 且 y != z,会剩余重量为 z - y 的银块无法被熔掉;* 如果 x != y 且 y == z,会剩余重量为 y - x 的银块无法被熔掉;* 如果 x != y 且 y != z,会剩余重量为 z - y 与 y - x 差值 的银块无法被熔掉。* 最后,* <p>* 如果剩余两块,返回较大的重量(若两块重量相同,返回任意一块皆可)* 如果只剩下一块,返回该块的重量* 如果没有剩下,就返回 0* 输入描述* 输入数据为两行:* <p>* 第一行为银饰数组长度 n,1 ≤ n ≤ 40,* 第二行为n块银饰的重量,重量的取值范围为[1,2000],重量之间使用空格隔开* 输出描述* 如果剩余两块,返回较大的重量(若两块重量相同,返回任意一块皆可);* <p>* 如果只剩下一块,返回该块的重量;* <p>* 如果没有剩下,就返回 0。*/
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);//银饰个数int n = sc.nextInt();//n块银饰的重量 使用LinkedList方便排序和插入LinkedList<Integer> weight = new LinkedList<>();for (int i = 0; i < n; i++) {weight.add(sc.nextInt());}System.out.println(getResult(weight));}//计算剩余银饰public static int getResult(LinkedList<Integer> weight) {//int res = 0;//升序排列,每次从最后取三个weight.sort(Integer::compareTo);//如果剩余银饰>=3个,则每次取后三个while (weight.size() >= 3) {int z = weight.removeLast();int y = weight.removeLast();int x = weight.removeLast();//取出差值// 如果 x == y == z,那么下面公式结果:remain=0, 表示三块银饰完全融掉// 如果 x == y && y != z,那么下面公式结果:remain = z - y// 如果 x != y && y == z,那么下面公式结果:remain = y - x// 如果 x != y && y != z,那么下面公式结果:remain = Math.abs((z - y) - (y - x))int remain = Math.abs((z - y) - (y - x));//如果有剩余,则把剩余的银饰插入到原升序列表中if (remain != 0) {//如果 remain 被找到,返回值是它在列表中的索引。//如果 remain 没有被找到,返回值是它应该插入的位置,以便保持列表的排序顺序。//这个值通常是在列表中的一个负数,其绝对值表示 remain 应该插入到的位置的索引。具体来说,-(insertion point + 1)。int index = Collections.binarySearch(weight, remain);if (index < 0) {index = -(index + 1);}//插入到index位置weight.add(index, remain);}}//如果剩两个,返回较大值if (weight.size() == 2) {return Math.max(weight.get(0), weight.get(1));} else if (weight.size() == 1) {return weight.get(0);} else {//没有剩,则返回0return 0;}}
}
package OD368;import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;/*** @description 最大坐标值、小明的幸运数* @level 3* @score 100*//*** 题目描述* <p>* 小明在玩一个游戏,游戏规则如下:* 在游戏开始前,小明站在坐标轴原点处(坐标值为0).* 给定一组指令和一个幸运数,每个指令都是一个整数,小明按照指令前进指定步数或者后退指定步数。前进代表朝坐标轴的正方向走,后退代表朝坐标轴的负方向走。* 幸运数为一个整数,如果某个指令正好和幸运数相等,则小明行进步数+1。* <p>* 例如:* <p>* 幸运数为3,指令为[2,3,0,-5]* <p>* 指令为2,表示前进2步;* <p>* 指令为3,正好和幸运数相等,前进3+1=4步;* <p>* 指令为0,表示原地不动,既不前进,也不后退。* <p>* 指令为-5,表示后退5步。* <p>* 请你计算小明在整个游戏过程中,小明所处的最大坐标值。* <p>* 输入描述* 第一行输入1个数字,代表指令的总个数 n(1 ≤ n ≤ 100)* <p>* 第二行输入1个数字,代表幸运数m(-100 ≤ m ≤ 100)* <p>* 第三行输入n个指令,每个指令的取值范围为:-100 ≤ 指令值 ≤ 100* <p>* 输出描述* 输出在整个游戏过程中,小明所处的最大坐标值。异常情况下输出:12345*/
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);//指令总数int n = sc.nextInt();//幸运数int luck = sc.nextInt();//指令序列int[] command = new int[n];for (int i = 0; i < n; i++) {command[i] = sc.nextInt();}System.out.println(getMaxCoordinate(command, luck));}//返回最大坐标,异常返回12345public static int getMaxCoordinate(int[] command, int luck) {//异常if (luck < -100 || luck > 100 || command == null || command.length == 0 || command.length > 100) {return 12345;}//指令范围:-100~100for (int i : command) {if (i < -100 || i > 100) {return 12345;}}List<Integer> list = new ArrayList<>();list.add(0);int now = 0;//步数分正负,负数幸运值的话就是多—1for (int i = 0; i < command.length; i++) {if (command[i] == luck && luck > 0) {now += command[i] + 1;list.add(now);} else if (command[i] == luck && luck < 0) {now += command[i] - 1;list.add(now);} else {//包括command[i]=luck=0的情况,不用多走一步now += command[i];list.add(now);}}list.sort((a, b) -> b - a);return list.get(0);}
}

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

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

相关文章

三分钟了解链动3+1模式

在电商领域的营销策略中&#xff0c;链动31模式以其独特的魅力和优势&#xff0c;吸引了众多商家的目光。下面&#xff0c;我们将对这一模式进行深度剖析&#xff0c;并探讨其相较于链动21模式的优势所在。 一、身份设置与奖励机制 链动31模式在身份设置上分为三种&#xff1…

漏洞挖掘 | 记一次某src拿下高危漏洞

一、获取web端管理员权限 0x01简单查看一下&#xff0c;发现存在登录以及证书查询操作指南等功能 因该站特征较为明显&#xff0c;所以对页面进行了强打码 0x02弱口令测试&#xff08;无成果&#xff09; 既然存在登录口&#xff0c;那么肯定要试试弱口令了&#xff0c;开干…

解锁微信客服的潜力:提升客户满意度与忠诚度

随着全球数字化进程的加速&#xff0c;企业如何有效利用数字化工具提升服务质量和客户满意度&#xff0c;成为了企业国际化、数字化出海的关键。在这一大背景下&#xff0c;微信客服以其卓越的功能和广泛的用户基础&#xff0c;成为了企业数字化转型的重要助力。 一、微信客服…

从零开始理解 XML 和 JSON 的区别

在这篇文章中&#xff0c;我们将深入探讨XML和JSON这两种数据格式的关键异同点&#xff0c;以便读者可以根据项目需求做出明智的技术选择。 了解XML XML&#xff08;Extensible Markup Language&#xff09;是一种用于数据定义的标记语言&#xff0c;最初由万维网联盟&#x…

深入理解网络传输协议——UDP协议优化

UDP 是一个简单常用的协议&#xff0c;经常用于引导其他传输协议。事实上&#xff0c;UDP 的特色在于它所省略的那些功能&#xff1a;连接状态、握手、重发、重组、重排、拥塞控制、拥塞预防、流量控制&#xff0c;甚至可选的错误检测&#xff0c;统统没有。这个面向消息的最简…

【笔记】【矩阵的二分】668. 乘法表中第k小的数

力扣链接&#xff1a;题目 参考地址&#xff1a;参考 思路&#xff1a;二分查找 把矩阵想象成一维的已排好序的数组&#xff0c;用二分法找第k小的数字。 假设m行n列&#xff0c;则对应一维下标范围是从1到mn&#xff0c;初始&#xff1a; l1; rmn; mid(lr)/2 设mid在第i行&a…

vs显示空格

显示空格 Visual Studio 2022 支持显示空白字符的功能。可以通过以下步骤来启用这个功能&#xff1a; 在菜单栏中选择 编辑(Edit)。然后选择 高级(Advanced)。最后选择 查看空白(View White Space)。此外&#xff0c;您还可以使用快捷键 Ctrl R, Ctrl W 来切换显示或隐藏空…

在ie edge 浏览器中,uni-easyinput 组件类型为password时,出现两个小眼睛图标

问题描述&#xff1a; 在ie edge 浏览器中&#xff0c;uni-easyinput 组件类型为password时&#xff0c;出现两个小眼睛图标&#xff0c;此为官方组件已存在的bug 解决思路&#xff1a; 在/uni_modules/uni-easyinput/components/uni-easyinput.vue组件中样式中增加以下代码 …

**args和**kwargs是什么?

**args和 **kwargs是什么&#xff1f; **kwargs 是一个惯用的命名&#xff0c;指代一个字典&#xff08;dictionary&#xff09;&#xff0c;其中包含了所有未在函数定义中明确指定的关键字参数。在 Python 中&#xff0c;函数的参数可以分为两类&#xff1a;位置参数&#xf…

新兴互联网银行搭档Apache SeaTunnel构建数据流通管道!

当新兴互联网银行乘着数字化改革的风潮搭档数据集成平台Apache SeaTunnel&#xff0c;成千万上亿的数据就有了快速流通的管道。6月26日14:00&#xff0c;Apache SeaTunnel社区将带上企业最佳实践与观众见面&#xff0c;与大家面对面交流最新的企业实践部署经验。锁定SeaTunnel视…

[spring] Spring MVC Thymeleaf(上)

[spring] Spring MVC & Thymeleaf&#xff08;上&#xff09; 本章内容主要过一下简单的 Spring MVC 的案例 简单来说&#xff0c;spring mvc 就是比较传统的网页开发流程&#xff0c;目前 boot 是可以比较轻松的配置 thymeleaf——毕竟 spring boot 内置对 thymeleaf 的…

HTML(6)——表单

目录 input标签基本使用 input标签占位 单选框radio 上传文件file 下拉菜单 文本域 label标签 按钮 input标签基本使用 input标签type属性值不同&#xff0c;则功能不同 <input type"..."> type属性值说明text文本框&#xff0c;用于输入单行文本p…

未授权访问漏洞总结

以下总结了常见的未授权访问漏洞&#xff0c;还在持续更新中&#xff0c;遇到就会补充。欢迎大家关注~ 目录 FTP未授权访问&#xff08;21&#xff09; 漏洞原理 漏洞检测 漏洞利用 漏洞修复 LDAP未授权访问&#xff08;389&#xff09; 漏洞原理 漏洞检测 漏洞利用 …

微信小程序---支付

一、判断是否登录 如果没有登录&#xff0c;走前端登录流程&#xff0c;不再赘述 二、获取订单编号 跟自己的后端商议入参&#xff0c;然后获取订单编号 三、通过订单编号获取wx.requestPayment()需要的参数 获取订单编号再次请求后端接口&#xff0c;拿到wx.requestPayme…

Mongodb介绍及window环境安装

本文主要内容为nosql数据库-MongoDB介绍及window环境安装。 目录 什么是MongoDB&#xff1f; 主要特点 MongoDB 与Mysql对应 安装MongoDB 下载MongoDB 自定义安装 创建目录 配置环境变量 配置MongoDB服务 服务改为手动 启动与关闭 安装MongoDB Shell 下载安装包 …

触发器结构

1.修改分隔符符号 delimiter$$ 可以修改成$$//都可以 2.创建触发器函数名称 create trigger函数名 3.什么样的操作触发&#xff0c;操作哪个表 after:...之后触发 before:...之前触发 insert:...插入被触发 update:...修改被触发 delete:...删除被触发 on 表名 实例…

介绍一下VueUse中useAsyncState的实现原理

useAsyncState 是 VueUse 库中提供的一个实用工具&#xff0c;它用于处理异步状态。这个 Hook 允许你在 Vue 组件中以同步的方式处理异步操作的状态&#xff0c;比如加载、加载中、错误等。 useAsyncState 的实现原理通常涉及以下几个核心概念&#xff1a; 响应式系统&#xf…

三:SpringBoot的helloworld和使用Springboot的优点以及快速创建Springboot应用

三&#xff1a;SpringBoot的helloworld和使用Springboot的优点以及快速创建Springboot应用 一&#xff1a;HelloWorld [我们创建的是maven项目或者直接创建一个Spring] 1.1&#xff1a;创建一个maven 项目&#xff08;1】&#xff1a;需要自己手动写一个SpringBoot 的启动类同…

Python自动化办公篇—pandas操作Excel:读取+查看+选择+清洗+排序+筛选+函数+写入

目录 专栏导读库的介绍库的安装1、读取数据2、查看数据3、选择数据4、数据清洗5、数据排序6、数据筛选7、数据操作8、数据写入总结 专栏导读 文章名称链接Python自动化办公—pyautogui图像定位\点击功能,实现自动截取当前屏幕并检索点击(可制作为游戏点击脚本)点我进行跳转Pyt…

为什么网上这么多破解 Intellij IDEA 的工具,但是官方却不管呢?

大家好&#xff0c;我是小2&#xff0c;一个程序员~ 程序员小2 每天一篇技术重磅好文&#xff0c;涉及一线互联网大厂应用架构&#xff08;高可用、高性能、高稳定&#xff09;&#xff0c;AI、大数据、java架构等热门领域。 112篇原创内容 公众号 来源&#xff1a;Java知音…