查找一维数组中的局部最大值

2024-04-26

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

假设我有一个数组:

[ 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])   // -> []

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

查找一维数组中的局部最大值 的相关文章

随机推荐

  • 我们可以在密钥库中加载多个证书和密钥吗?

    我们可以在密钥库中加载多个证书和密钥吗 是否始终需要仅加载对 即证书和密钥一起 如果密钥库有多个证书和密钥 当 Java SSL 尝试作为服务器建立连接时会选择哪一个 尽管这取决于 KeyStore 类型 但通常您可以在单个存储中存储多个私
  • 如何获取图标名称的完整文件路径?

    如何从 GNOME 中的图标名称获取完整文件路径 import gtk icon theme gtk icon theme get default icon info icon theme lookup icon my icon name
  • 使用 JavaScript 以编程方式更新 Google 电子表格?

    是否可以使用 JavaScript 从网页更新 Google 电子表格 设想 1 用户登陆网页 2 JS脚本执行 修改Google Spreadsheet 如何才能做到这一点 这是可能的 尽管我发现这很困难 请参阅此处了解所有详细信息 ht
  • AngularJs - 修改输入格式的指令

    我想做以下事情 我的控制器模型中有一个日期对象 我想让用户修改它 应为用户提供两个输入字段 第一个输入字段应修改日期 另一个输入字段应修改时间 两个输入字段应适用于相同的日期模型
  • UIImage 来自 NSString 中保存的字节

    我正在尝试从实际上保存在 NSString 中的字节数组创建 UIImage 有人可以告诉我该怎么做吗 这是我想做的事情 NSString sourceString mYActualBytesAREinHERe get the bytes
  • 开始/停止图像视图旋转动画

    我有一个开始 停止按钮和一个我想要旋转的图像视图 当我按下按钮时 我希望图像开始旋转 当我再次按下按钮时 图像应该停止旋转 我目前正在使用UIView动画 但我还没有找到停止视图动画的方法 我希望图像旋转 但是当动画停止时 图像不应返回到起
  • Rubberduck UI 子菜单被禁用

    我刚刚在 Windows 10 操作系统上安装了 Rubberduck VBE 插件 v2 0 11 2453 MSIL 当我在 Excel 中打开启用宏的 Excel 工作簿并启动 VBA 编辑器时 Rubberduck 启动 但 Rub
  • Android:尝试在空对象引用上调用虚拟方法“void android.widget.ListView.setAdapter(android.widget.ListAdapter)”

    我正在尝试创建一个列表视图 其中包含另一个活动中的图片和文本 我不太专注于android编程 所以基本上就像android编程的新手一样 我在调试我的应用程序时遇到困难 请帮我 Error Caused by java lang NullP
  • CUDA 估计 2D 网格数据的每块线程数和块数

    首先我要说的是 我已经仔细阅读了所有类似的问题 确定每个块的线程和每个网格的块 https stackoverflow com questions 4391162 cuda determining threads per block blo
  • Objective C - 音频延迟估计的互相关

    我想知道是否有人知道如何执行互相关两个音频信号之间iOS 我想将接收器 我正在从麦克风接收信号 处获得的 FFT 窗口与发射器处 正在播放音轨 处的 FFT 窗口对齐 即确保每个窗口的第一个样本 除了发射机的 同步 周期之外 也将是接收机的
  • wxPython 上的 IPython

    我一直在尝试找到一种方法 让 IPython Shell 能够在wx Frame 在库代码或 Google 中搜索 基于 wxPython 的 IPython 小部件 https www google com search q wxPyth
  • Three.js:基于图像的光照(IBL)

    I m searching to add an IBL to my scene and objects But I can t find anything on the web There are some examples with an
  • 将级联输入与 JasperReports JasperServer 4.0 的 API/Web 服务结合使用

    快速前言 我的公司实际上正在支付 Jasper 支持费用 但他们一直无法帮助我 此时 通过谷歌搜索答案只会让我找到他们网站上我自己的未答复的论坛主题 我快疯了 我在编写代码来使用 Jasper 的 Web 服务 API 处理级联输入时遇到了
  • 如何在Python中像Flask一样使用Klein接收上传的文件

    在搭建Flask服务器时 我们可以尝试接收用户上传的文件 imagefile flask request files imagefile filename str datetime datetime now replace werkzeug
  • 从 Bash 调用的 Expect 脚本的退出状态代码

    我制作了一个 Bash 脚本 它使用 Expect 脚本来自动进行 ssh 登录 该脚本连接到多个服务器并运行一些命令 bash 脚本会提示输入一次登录凭据 我想合并一个功能 其中如果第一个服务器登录失败 脚本将终止 以避免脚本检查下一个服
  • 如何在android中的listview中添加listview?

    我在列表视图项目中添加为 3 个文本视图 我想用 3 个文本视图和列表视图显示列表视图项目 我正在这样做
  • 编译时出现 C++ 错误

    我正在尝试编译一个游戏 但收到 100 多个错误 例如 C Users AppData Local Temp cctQCagR o In function load image std string main cpp text 0x4bd4
  • iPhone 5 4 英寸 [重复]

    这个问题在这里已经有答案了 可能的重复 如何检测iPhone 5 宽屏设备 https stackoverflow com questions 12446990 how to detect iphone 5 widescreen devic
  • 如何使用 PEAR 安装程序完全删除 PHPUnit?

    几天前 我使用 PEAR 安装程序安装了 PHPUnit 我还安装了 Selenium RC 用于 PHP 测试 现在我想卸载它 同时删除所有相关的文件夹和文件 我运行了以下命令 pear uninstall phpunit PHPUnit
  • 查找一维数组中的局部最大值

    有没有一种简单的方法可以在一维数组中找到局部最大值 假设我有一个数组 0 1 10 lt max 8 lt ignore 3 0 0 4 6 lt ignore 10 lt max 6 lt ignore 1 0 0 1 4 lt max