gpt4 book ai didi

javascript - 在一维数组中查找局部最大值

转载 作者:数据小太阳 更新时间:2023-10-29 05:49:57 26 4
gpt4 key购买 nike

有没有一种简单的方法可以找到一维数组中的局部最大值?

假设我有一个数组:

[ 0,
1,
10, <- max
8, <- (ignore)
3,
0,
0,
4,
6, <- (ignore)
10, <- max
6, <- (ignore)
1,
0,
0,
1,
4, <- max
1,
0 ]

我希望它找到 10 和 4,但忽略 8 和 6,因为它们紧挨着 10。从数学上讲,如果它是一个函数,您可以找到导数等于零的位置。我不太确定如何在 Javascript 中执行此操作。

最佳答案

这将返回给定整数数组中所有峰值(局部最大值)的数组,同时处理平台:

function findPeaks(arr) {
var peak;
return arr.reduce(function(peaks, val, i) {
if (arr[i+1] > arr[i]) {
peak = arr[i+1];
} else if ((arr[i+1] < arr[i]) && (typeof peak === 'number')) {
peaks.push(peak);
peak = undefined;
}
return peaks;
}, []);
}

findPeaks([1,3,2,5,3]) // -> [3, 5]
findPeaks([1,3,3,3,2]) // -> [3]
findPeaks([-1,0,0,-1,3]) // -> [0]
findPeaks([5,3,3,3,4]) // -> []

请注意,数组的第一个和最后一个元素不被视为峰值,因为在数学函数的上下文中,我们不知道它们之前或之后的内容,因此无法判断它们是否是峰值。

关于javascript - 在一维数组中查找局部最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25045638/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com