欢迎访问宙启技术站
智能推送

实现Java函数,计算指定数组中所有数的平均值。

发布时间:2023-06-18 09:00:24

问题描述

给定一个整数数组 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)。

需要注意的是,在真实应用中,如果数组过大,第一种方法可能会遇到数值溢出的问题,应考虑第二种方法或其他更高效的算法。