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

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

例如,数组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 @   lanedm  阅读(130)  评论(1编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· Qt个人项目总结 —— MySQL数据库查询与断言
点击右上角即可分享
微信分享提示