实现Java函数,计算指定数组中所有数的平均值。
问题描述
给定一个整数数组 nums,计算这个数组中所有数的平均值,返回一个小数。
示例1:
输入:nums = [1,2,3,4,5]
输出:3.00000
解释:整数数组 nums 的平均值为 3 。
示例2:
输入:nums = [0,1,2,3,4,5]
输出:2.50000
解释:整数数组 nums 的平均值为 (0 + 1 + 2 + 3 + 4 + 5) / 6 = 2.5。
提示:
1 <= nums.length <= 104
-104 <= nums[i] <= 104
问题分析
本问题的解法看似简单,但在实现时,有许多坑点需要注意,包括数组大小,数组元素范围等方面。
解法一
最暴力的方法就是将数组中所有元素求和,然后除以数组大小即可,如下所示:
java:
public double findAverage(int[] nums) {
long sum = 0;
for (int num : nums)
sum += num;
return (double) sum / nums.length;
}
时间复杂度:O(n)
空间复杂度:O(1)
解法二
通过JDK1.8附带的流处理函数,将数组中所有元素求和,然后除以数组大小即可,如下所示:
java:
public double findAverage(int[] nums) {
return Arrays.stream(nums).average().orElse(Double.NaN);
}
时间复杂度:O(n)
空间复杂度:O(1)
总结
本文介绍了两种实现Java函数计算指定数组中所有数的平均值的方法,第一种方法是最暴力的遍历求和的方法,第二种方法是使用Java中附带的流处理函数求平均数。两种方法均具有相同的时间复杂度O(n),空间复杂度O(1)。
需要注意的是,在真实应用中,如果数组过大,第一种方法可能会遇到数值溢出的问题,应考虑第二种方法或其他更高效的算法。
