小工具知识网

当前位置: 首页 > 行业知识 > 华为OD机试 - 剩余银饰的重量(Java 2024 C卷 100分)

行业知识

华为OD机试 - 剩余银饰的重量(Java 2024 C卷 100分)

2026-10-25 15:43:34 来源:互联网转载

华为OD机试 2024C卷题库疯狂收录中,刷题点这里

专栏导读

本专栏收录于《华为OD机试(JAVA)真题(A卷+B卷+C卷)》。

刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。

一、题目描述

有N块二手市场收集的银饰,每块银饰的重量都是正整数,收集到的银饰会被熔化用于打造新的饰品。

每一回合,从中选出三块 最重的 银饰,然后一起熔掉。

假设银饰的重量分别为 x 、y和z,且 x public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); List weights.add(scanner.nextInt()); } System.out.println(meltSilverware(weights)); } private static int meltSilverware(List // 当银饰数少于3块时,处理剩余情况 while (weights.size() = 3) { Collections.sort(weights, Collections.reverseOrder()); // 降序排序 int z = weights.get(0); int y = weights.get(1); int x = weights.get(2); // 移除最重的三块银饰 weights.remove(0); weights.remove(0); weights.remove(0); // 根据规则计算剩余银饰 if (x == y && y == z) { // 全部熔掉,不剩余 } else if (x == y && y != z) { // 剩余 z - y weights.add(z - y); } else if (x != y && y == z) { // 剩余 y - x weights.add(y - x); } else if (x != y && y != z) { // 剩余 z - y 与 y - x int newWeight = Math.abs((z - y) - (y - x)); if (newWeight 0) { weights.add(newWeight); } } } // 处理剩余的银饰情况 if (weights.size() == 2) { return Math.max(weights.get(0), weights.get(1)); } else if (weights.size() == 1) { return weights.get(0); } else { return 0; } }}

六、效果展示

1、输入

3

3 7 10

2、输出

1

3、说明

选出 3 7 10,需要计算 (7-3) 和 (10-7) 的差值,即(7-3)-(10-7)=1,所以数组转换为 [1],剩余一块,返回该块重量,返回1

下一篇:华为OD机试 - 简易内存池 - 逻辑分析(Java 2024 C卷 200分)

本文收录于,华为OD机试(JAVA)真题(A卷+B卷+C卷)

刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。

上一篇:怎么设置平板扣费服务器?

下一篇:玩的世界服务器怎么制作?