JavaScript 找出最大的连续递减元素

JavaScript 找出最大的连续递减元素

在给定的问题中,我们需要使用JavaScript的功能来找到最大的连续递减元素。这个问题可以使用JavaScript中的简单算法来解决。

理解逻辑

更详细地解释问题陈述的逻辑。

这个问题要求我们获取数组中最大的连续递减的元素数量,或者可以说要找到输入数组中最长的连续递减子数组。

所以为了解决这个问题,我们需要通过迭代数组中的每个元素来工作,并在一个名为count的变量中跟踪当前连续递减元素的数量。所以当我们遇到一组连续的递减元素时,我们会增加count。

否则,相邻的元素不是递减顺序,所以我们将检查当前count是否大于当前的maxCount(初始值为0)。如果这个条件成立,我们将更新maxCount为当前的count。然后将count重置为0。因为我们找到了一个不递减的元素组,并且当前的连续递减子数组将结束。

算法

步骤1 :算法开始时,我们将定义一个名为’maxDecreasingAdjacent’的函数。这个函数将在数组中找到连续递减的元素。

步骤2 :然后函数将通过将两个计数变量maxCount和count初始化为0来开始。

步骤3 :现在前进到第二步,我们将初始化一个for循环来迭代输入数组中的所有元素。并为了跟踪元素,我们已经在步骤2中定义了计数变量。

步骤4 :在这个阶段,当我们遇到两个相邻的递减的元素时,我们增加count。当我们遇到两个相邻的元素不是递减的时候,我们确定当前的count是否超过了当前的maxCount。

步骤5 :如果是这样,我们调整maxCount以反映最近的count。由于我们遇到了一个非递减的相邻元素对,当前的连续递减子数组已经结束,所以我们将count重置为0。

步骤6 :在最后一步中,我们将从数组中获取递减相邻元素的结果。

代码

// function to find decreasing adjacent
function maxDecreasingAdjacent(arr) {
    // object to store the decreasing adjacent
    let maxCount = 0;
    let count = 0;
    // initialize a loop till the length of array
    for (let i = 1; i < arr.length; i++) {
      if (arr[i] < arr[i-1]) {
        count++;
      } else {
        if (count > maxCount) {
          maxCount = count;
        }
        count = 0;
      }
    }
    if (count > maxCount) {
      maxCount = count;
    }
    return maxCount;
  }

  //define two different arrays
  const array1 = [5, 4, 3, 2, 1];
  const array2 = [1, 2, 3, 4, 5];
  const adjacent1 = maxDecreasingAdjacent(array1);
  const adjacent2 = maxDecreasingAdjacent(array2);
  //print the output
  console.log(`For {array1} the decreasing adjacent is{adjacent1}`);
  console.log(`For {array2} the decreasing adjacent is{adjacent2}`);

输出

For 5,4,3,2,1 the decreasing adjacent is 4
For 1,2,3,4,5 the decreasing adjacent is 0

上述算法接受两种类型的数组,一种是array1,另一种是array2。函数maxDecreasingAdjacent中的输入数组是整数数组。对于这个输入数组,我们需要找到最大的递减相邻元素的数量。该函数返回数组中最长递减子数组的长度。

输出显示了问题,如果输入数组是[5, 4, 3, 2, 1],则函数返回结果4,因为数组中有4个递减相邻元素。而在第二个数组[1, 2, 3, 4, 5]中,函数返回0,因为其中没有递减元素。如果输入数组是[5, 4, 3, 2, 1, 3, 2, 1],则函数将再次返回4,因为最长的递减子数组是[5, 4, 3, 2]。

时间复杂度

时间复杂度和空间复杂度是评判算法是否高效的两个指标。在上面的代码中,我们发现复杂度为O(n)。因为它考虑了数组中每一个递减相邻子数组,并跟踪最长子数组的长度,所以这种技术是有效的。该算法只需遍历数组一次,因此其时间复杂度为O(n)。

结论

这是如何解决上述问题陈述中提出的问题的方法。确定数组中递减相邻的最简单和最准确的方法。我们可以使用JavaScript中简单的O(n)算法来计算数组中最大的递减相邻成员的数量。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程