华为OD机试 - 记负均正(Java 牛客练习题 HJ105)

博客介绍了如何解决华为OD机试中的一道题目,涉及读取整数、计算负数个数及正数平均值。解题思路包括读取输入、判断正负数、计算平均值,并提供了Java算法源码和运行效果展示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、题目描述

首先输入要输入的整数个数n,然后输入n个整数。输出为n个整数中负数的个数,和所有正整数的平均值,结果保留一位小数。
0即不是正整数,也不是负数,不计入计算。如果没有正数,则平均值为0。

数据范围: 1≤n ≤2000 ,输入的整数都满足∣val∣≤1000 。

二、输入描述

首先输入一个正整数n,然后输入n个整数。

三、输出描述

输出负数的个数,和所有正整数的平均值。

四、测试用例

测试用例1

1、输入

5
-1 2 3 0 -2

2、输出

2 2.5

3、说明

负数:-1 和 -2,共2个。
正数:2 和 3,平均值 = (2+3)/2 = 2.5。

测试用例2

1、输入

5
-2 0 5 0 0

2、输出

### 华为OD真实题目与编程练习资料 华为OD的题目通常分为多个版本,例如A卷、B卷、C卷等[^2]。这些卷可能包含一些历史题目的重复以及新增加的内容。对于准备此类考的人来说,了解历年真题及其解法是非常重要的。 #### 历年真题分析 在2023年的华为OD中,有一道关于Java实现分糖果的经典算法问题被广泛讨论,并提供了详细的解题思路和代码示例[^1]。这表明该类题不仅考察基本语法掌握情况,还注重逻辑思维能力的应用。 以下是基于上述提到的一道典型例题——“分糖果”的解决方案: ```java import java.util.*; public class CandyDistribution { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); // 孩子数量 int m = scanner.nextInt(); // 糖果总数 List<Integer> distributionList = distributeCandies(n, m); System.out.println(distributionList.toString()); } private static List<Integer> distributeCandies(int childrenCount, int candyTotal){ List<Integer> result = new ArrayList<>(childrenCount); for (int i=0;i<childrenCount;i++) { result.add(0); } while(candyTotal > 0){ for(int j=0; j<result.size() && candyTotal >0 ;j++){ result.set(j,result.get(j)+1); candyTotal--; } } return result; } } ``` 此程序实现了公平分配一定量的糖果给若干名儿童的过程。通过循环遍历列表来逐一增加每位孩子的糖果数直到没有剩余为止。 #### 获取更多资源的方法 为了更好地备战华为OD,可以参考牛客网上的专项训练模块以及其他公开渠道分享的相关经验贴。特别是针对不同类型的算法设计模式进行深入学习,比如动态规划、贪心策略等高级技巧。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

哪 吒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值