JavaScript 中的最大递减相邻元素
在给定的问题陈述中,我们被要求借助 javascript 功能找出最大递减相邻元素。这个问题可以借助 javascript 中的简单算法来解决。
理解逻辑
更详细地解释问题陈述的逻辑。
问题要求我们获取数组中递减相邻项的最大数量,或者我们可以说我们必须在输入数组中找到最长的递减子数组。
因此,为了解决这个问题,我们需要通过遍历整个数组来工作,一次一个项目,并将在名为 count 的变量中跟踪递减最近项的当前数量。所以我们会遇到一组正在减少的相邻元素。然后我们将增加计数。
否则相邻元素不是按递减顺序排列的,因此我们将检查当前计数是否大于当前 maxCount(最初设置为 0)。如果此条件为真,则我们将 maxCount 更新为当前计数。然后我们将计数重置为 0。因为我们找到了一组不递减的项目,并且当前递减相邻元素的子数组将结束。
算法
步骤 1:在算法开始时,我们将定义一个名为"maxDecreasingAdjacent"的函数。此函数将找到数组中元素的递减相邻。
步骤 2:然后该函数将首先初始化两个计数变量,名为 maxCount 和 count。两个变量都已初始化为 0。
步骤 3:现在转到第二步,我们将初始化一个 for 循环来迭代输入数组中存在的所有项目。为了跟踪元素,我们已经在步骤 2 中定义了计数变量。
步骤 4:在此阶段,只要遇到两个相邻组件正在减少,我们就会提高计数。当我们遇到两个相邻元素没有减少时,我们确定当前计数是否超过当前 maxCount。
步骤 5:如果是,我们调整 maxCount 以反映最新计数。由于我们接触了一对非递减相邻元素,当前的递减相邻项子数组已终止,因此我们将计数重置为 0。
步骤 6:在最后一步中,我们将从数组中获得递减相邻元素的结果。
示例
// 函数用于查找递减相邻
function maxDecreasingAdjacent(arr) {
// 对象存储递减的相邻元素
let maxCount = 0;
let count = 0;
// 初始化一个循环,直到数组的长度
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;
}
//定义两个不同的数组
const array1 = [5, 4, 3, 2, 1];
const array2 = [1, 2, 3, 4, 5];
const vicinity1 = maxDecreasingAdjacent(array1);
const vicinity2 = maxDecreasingAdjacent(array2);
//打印输出
console.log(`对于 ${array1},递减相邻是 ${adjacent1}`);
console.log(`对于 ${array2},递减相邻是 ${adjacent2}`);
输出
对于 5,4,3,2,1,递减相邻是 4 对于 1,2,3,4,5,递减相邻是 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) 算法来计算数组中相邻成员减少的最大数量。
相关文章
有用资源
javascript 参考教程 - 该教程包含有关 javascript 的更多信息:https://www.cainiaomax.com/javascript/

