📅  最后修改于: 2023-12-03 14:54:59.192000             🧑  作者: Mango
在JavaScript中,可以使用简单的算法来查找数组中的局部极值数。 局部极值数是指数组中某个元素大于或小于其相邻元素的值。
function findLocalExtrema(array) {
var localMin = [],
localMax = [];
for(var i = 1; i < array.length; i++){
if(array[i-1] < array[i]) continue;
if(array[i-1] >= array[i]) localMin.push(array[i]);
while(array[i+1] === array[i] && i < array.length-1) i++;
if(array[i+1] < array[i]) localMax.push(array[i]);
else if(array[i+1] >= array[i]) i++;
}
return {min: localMin, max: localMax};
}
函数findLocalExtrema
接受一个包含数字类型的数组参数。此函数具有两个数组本地极大值和本地极小值,并返回所有本地极值。 算法中的步骤在函数内部实现。
其中,localMin
和localMax
是两个空数组,用于存储本地最小值和本地最大值。然后,我们使用一个循环语句,遍历整个数组。
在第一步中,我们检查前一个元素是否小于当前元素。如果是,则继续检查下一个元素。如果不是,则将当前元素添加到本地最小值数组中。
下一步,我们从当前位置开始,继续遍历数组。如果后续元素小于当前元素,则当前元素就是一个本地最大值。将其添加到本地最大值数组中。并且我们将计数器i
更新为当前位置,并继续从下一个元素开始遍历。如果后续元素大于或等于当前元素,则当前元素不是本地最大值。此时,我们将计数器i
更新为当前位置,并继续从下一个元素开始遍历。
最后,函数将返回包含本地最小值和本地最大值的对象。
此算法简单有效,用于查找简单的局部最大/最小值。该算法的时间复杂度为O(n)。