给定一个整数数组,找到具有最大乘积的相邻元素对并返回该乘积 JavaScript

javascriptweb developmentfront end technology

我们在这个问题陈述中的工作是找到具有最大乘积的相邻元素对,并在给定数组的情况下返回乘积。我们必须借助 Javascript 功能来实现这个问题。

给定问题的逻辑

在给定的问题陈述中,我们必须计算数组中最大元素的乘积并将结果输出显示到控制台。因此,我们将使用两种方法来实现这个问题:第一种是使用无穷大,第二种是不使用无穷大。无穷大是一个全局对象。无穷大的值大于任何数字。如果我们使用负无穷大,则表示它是最小的数字。在第二种方法中,我们将首先初始化前两个元素的乘积,并检查其值与所有乘积的值,如果大于该乘积,则返回其值。

算法 - 借助 Infinity

步骤 1 − 在代码开始时声明一个整数数组。

步骤 2 - 涉及定义一个名为 findProduct 的函数,该函数以输入数组作为参数并返回数组最大元素的乘积。

步骤 3 - 我们初始化一个变量来存储最大元素和结果乘积。

步骤 4 - 我们开始一个 for 循环来遍历数组的每个元素,使用乘法运算符计算相邻元素的乘积。

步骤 5 - 如果上述步骤的结果乘积大于步骤 3 中定义的最大乘积,我们将按照上述步骤使用新的乘积值更新其值。

步骤 6 - 最后,显示数组中最大项的最大乘积的输出。

算法代码 - 在 Infinity 的帮助下

const arr = [1, 2, 3, 4, 5];
//计算相邻项的最大乘积的函数
const findProduct = (arr = []) => {
   //存储最大乘积的变量
   var largest = -Infinity;
   for(let i = 0; i < arr.length - 1; i++){
      const product = arr[i] * arr[i + 1];
      if(product > largest){
         largest = product;
      }
   }
   return largest;
};
console.log(findProduct(arr));

算法 - 无无穷大

步骤 1 - 此步骤涉及创建一个数组,我们将从中计算两个相邻元素的最大乘积。

步骤 2 - 我们定义一个函数来确定数组中两个相邻元素的最大乘积。

步骤 3 - 我们通过计算前两个相邻元素的乘积来声明最大乘积值。

步骤 4 - 首先初始化最大乘积的值并启动 for 循环。for 循环遍历数组并使用乘法运算符计算相邻元素的乘积。如果两个相邻元素的乘积大于当前最大乘积值,我们将新的最大值添加到步骤 3 中定义的变量中。

步骤 5 − 最后,此步骤显示两个最大相邻元素的最大乘积。

算法代码 - 不含无穷大

const arr = [5, 6, 7, 8, 9];
//计算最大乘积的函数
const findLargestProduct = (arr = []) => {
   let largestProduct = arr[0] * arr[1];
   for(let i = 1; i < arr.length - 1; i++){
      const product = arr[i] * arr[i + 1];
      if(product > largestProduct){
         largestProduct = product;
      }
   }
   return largestProduct;
};
console.log(findLargestProduct(arr));

复杂度

第一种方法用于确定两个相邻元素的乘积,其时间和空间复杂度分别为 O(n) 和 O(1)。

代码时间复杂度为 O(n) 的原因是使用单个 for 循环来计算输入数组中相邻元素的乘积。此外,代码的内存使用量是恒定的,这导致空间复杂度为 O(1)。

关于第二个代码:O(n^2) 和 O(n) 分别是时间和空间复杂度。

在第二个代码中,使用两个 for 循环来计算给定数组中相邻项的部分和。因此,两个循环都遍历整个数组,因此该代码的时间复杂度为 O(n^2),n 是输入数组的大小。并且代码还使用数组来存储部分和,其空间复杂度为 O(n)。

结论

上述代码有效地找到了数组中任何相邻项的最大乘积。我们可以看到,第一种方法的时间复杂度为 O(n),因此与第二种方法相比,它更有效率,第二种方法的时间复杂度为 O(n^2),效率较低。因此,总的来说,利用代码的时间和空间复杂度来优化算法的性能是重要的因素。


相关文章