排除最小值和最大值的数组平均值 JavaScript
在此问题陈述中,我们的任务是借助 Javascript 功能找到排除数组中最小值和最大值的数组平均值。此任务可以通过排除最小值和最大值并计算其余元素的平均值来完成。
给定问题的逻辑
要创建此问题的程序,我们将使用 Javascript 的数学函数借助 min 和 max 关键字获取最小值和最大值。
获得最小值和最大值后,我们将过滤数组并从数组中排除这些值。并使用 Reduce 方法计算剩余值的平均值。
算法
步骤 1 − 首先,我们将创建一个函数来计算数组元素的平均值并在其中传递一个数组。
步骤 2 − 因为我们必须从数组中排除最小值和最大值。此步骤将找出给定数组的最小值和最大值。为了获得这些值,我们将使用数学函数以及 min 和 max 关键字。
步骤 3 − 获得最小值和最大值后,是时候将它们从数组中排除了,因为我们必须计算数组剩余项的平均值。为了执行此过程,我们将使用过滤方法来过滤掉这些元素。
步骤 4 − 因为我们已经排除了数组的最小值和最大值,现在我们将计算数组其余元素的总和。而对于其余项目的总结,我们将使用reduce方法。
步骤5 - 现在我们有了其余元素的总和,现在将其除以剩余元素的长度以获得它们的平均值。
步骤6 - 最后,返回输出作为其余元素的平均值。
算法代码
function average(arr) { const min = Math.min(...arr); const max = Math.max(...arr); //过滤输入数组并排除最小值和最大值 const filterArr = arr.filter(x => x !== min && x !== max); const sum = filterArr.reduce((acc, val) => acc + val, 0); return sum / filterArr.length; } const arr = [10, 20, 30, 40, 50]; const avg = average(arr); console.log(avg);
在上面的代码中,我们使用了一些 JavaScript 内置函数,使代码变得简单快捷。借助 Math 函数,我们找到了最小值和最大值。然后 filter 方法将它们从数组中过滤掉。最后,reduce 方法计算其余项的总和。
所以我们的输出是 30,因为剩余元素 20、30、40 的平均值是 30。这里 10 是数组的最小元素,50 是数组的最大元素。根据问题陈述,我们排除了这两个元素以获得所需的结果。
复杂性
假设 n 是输入数组的长度,那么上述代码的时间复杂度为 O(n)。因为我们已经多次迭代所有元素,但每次迭代都是线性时间。上述代码的空间复杂度为 O(n),因为我们创建了一个新数组来记忆过滤后的项目。
结论
这是我们解决上述问题的方法。我们基本上使用了 JavaScript 的数学函数 reduce 来获得所需的结果。问题表明我们必须排除最小值和最大值并显示剩余元素的平均值。因此,执行问题所需的时间为 O(n),因为数组中有 n 个项目。