使用 JavaScript 计算每个子数组中第一和第二个元素之间的差值,并返回这些差值的总和
在给定的问题陈述中,我们被要求分别计算每个子数组中第一和第二个元素之间的差值,并且我们必须借助 JavaScript 功能返回这些差值的总和。在数组数据结构中,我们可以定义一个数组,该数组也可以包含子数组。
什么是 JavaScript 中的子数组数组?
让我们了解一下 JavaScript 中列表的工作原理。
在 JavaScript 中,我们可以定义子数组数组或嵌套数组。子数组数组是一个数组,其中包含一个或多个数组作为其元素。主数组中的每个数组项都是一个子数组,这也可以称为嵌套数组。所以让我们通过示例来理解
const array = [[1,2,3], [4,5,6], [7,8,9]];
在上面的例子中,一个数组是一个子数组数组。每个子数组包含 2 个元素。
我们还可以使用子数组的索引和子数组内元素的索引来访问子数组的单个项目。例如:要访问第二个子数组中的值 4,我们可以使用以下代码
console.log(array[1][1]);
输出
4
我们还可以使用 map、reduce、forEach 等数组方法来迭代子数组的元素。子数组数组基本上用于编程中表示和操作二维数据,例如矩阵和表格。
上述问题的逻辑
在 JavaScript 中计算子数组元素差值最简单的方法是使用 reduce 方法和元素索引。
所以让我们了解一下给定问题的逻辑。为了计算子数组的第一和第二个元素之间的差值,我们将声明一个变量来存储差值的总和。之后,我们将使用 for 循环遍历每个子数组。然后,我们将使用每个项目的索引计算其第二个和第一个元素之间的差值。最后,我们将使用算术运算符添加每个子数组的差值。
算法
步骤 1 − 声明一个名为 arr 的数组,其中包含整数元素的子数组。
步骤 2 − 声明子数组平均值的最终总和。
步骤 3 − 此步骤将通过获取其索引值来计算每个子数组的第二个和第一个元素之间的差值。
步骤 4 − 现在转到第三步,在此步骤中添加所有子数组的平均值。
步骤 5 − 现在将输出显示为子数组平均值的总和。
算法示例
// define array of subarrays const arr = [[1, 3], [7, 9], [11, 5]]; //calculate difference and their sum const sum = arr.reduce((acc, subArr) => { const diff = subArr[1] - subArr[0]; return acc + diff; }, 0); console.log("The sum of the differences of subarrays: "); console.log(sum);
使用 for 循环的示例
// define array of subarrays const arr = [[1, 3], [7, 9], [11, 5]]; let sum = 0; //calculate difference and their sum for (let i = 0; i < arr.length; i++) { const subArr = arr[i]; const diff = subArr[1] - subArr[0]; sum += diff; } console.log("The sum of the differences of subarrays: "); console.log(sum);
输出
The sum of the differences of subarrays: -2
时间复杂度
我们实现的代码具有 O(n) 的时间复杂度,其中 n 表示输入数组 arr 中的子数组数量。这种时间复杂度的原因为我们只迭代每个子数组一次,并在每个子数组上执行相同的工作。我们使用一个数组 arr 来保存输入和用于平均值总和以及 reduce() 回调函数中中间变量的固定内存量,因此整体空间复杂度也将为 O(n)。
结论
最后,这段代码使用 reduce 方法计算子数组数组中每个子数组的第一和第二个元素之间的差值的总和。这是在 JavaScript 中解决此问题的有效且简单的方法。就时间和空间复杂度而言,数量为 O(n)。