【算法】编写一个函数,返回数字数组的“峰值”(或局部最大值)的位置和值。

编写一个函数,返回数字数组的“峰值”(或局部最大值)的位置和值。

例如,数组arr=[0,1,2,5,1,0]在位置3处具有值为5的峰值(因为arr[3]等于5)。

输出将以Dictionary<string,List<int>的形式返回,其中包含两个键值对:“pos”和“peaks”。如果给定的数组中没有峰值,只需返回{“pos”=>new List<int>(),“peaks”=>new List<int>[)}。

示例:pickPeaks([3,2,3,6,4,1,2,3,2,1,2,3])应返回{pos:[3,7],peaks:[6,3]}(或其他语言中的等效值)

所有输入数组都是有效的整数数组(尽管它可能仍然是空的),所以您不需要验证输入。

数组的第一个和最后一个元素将不会被视为峰值(在数学函数的上下文中,我们不知道后面和前面是什么,因此,我们也不知道它是否是峰值)。

注意:[1,2,2,2,1]具有峰值,而[1,2,2,3]和[1,2,2,4,2]没有。如果是平台峰值,请只返回平台开始的位置和值。例如:pickPeaks([1,2,2,2,1])返回{pos:[1],peaks:[2]}

posted @ 2023-06-21 08:58  lanedm  阅读(125)  评论(1编辑  收藏  举报