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)算法来计算数组中最大的递减相邻成员的数量。