JavaScript 中最大递减相邻元素
给定的问题陈述要求我们借助 JavaScript 功能找出最大递减相邻元素。这个问题可以用 JavaScript 中一个简单的算法来解决。
理解逻辑
更详细地解释问题陈述的逻辑。
问题要求我们获取数组中最大数量的递减相邻项,或者可以说我们必须在输入数组中找到最长的递减子数组。
因此,为了解决这个问题,我们需要遍历整个数组,一次处理一个元素,并使用名为 count 的变量跟踪当前递减最近元素的计数。因此,我们将遇到一组递减的相邻元素。然后我们将增加计数。
否则,相邻元素不是递减顺序,因此我们将检查当前计数是否大于当前 maxCount(最初设置为 0)。如果此条件为真,我们将 maxCount 更新为当前计数。然后我们将计数重置为 0。因为我们已经找到了一组非递减的项目,并且当前递减相邻元素的子数组将结束。
算法
步骤 1:在算法开始时,我们将定义一个名为“maxDecreasingAdjacent”的函数。此函数将查找数组中元素的递减相邻元素。
步骤 2:然后函数将通过初始化两个计数变量(名为 maxCount 和 count)开始。这两个变量都已初始化为 0。
步骤 3:现在转到第二步,我们将初始化一个 for 循环来迭代输入数组中存在的所有项目。为了跟踪元素,我们在步骤 2 中已经定义了计数变量。
步骤 4:在这个阶段,每当我们遇到两个递减的相邻组件时,我们都会增加计数。当我们遇到两个不相邻的元素时,我们会确定当前计数是否超过当前 maxCount。
步骤 5:如果是,我们将调整 maxCount 以反映最新的计数。由于我们接触到一对非递减的相邻元素,因此当前递减相邻元素的子数组已终止,因此我们将计数重置为 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)。
结论
这就是我们如何解决上述问题陈述中提出的问题。确定数组的递减相邻元素的最简单和最准确的方法。我们可以使用简单的 O(n) JavaScript 算法来计算数组中最大数量的递减相邻成员。
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C 语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP