怎么找出趋势递减数列(并非绝对递减)中的异常元素?

发布于 2022-09-11 20:26:05 字数 690 浏览 18 评论 0

  1. 给出一个趋势递减数列,找出其中的异常元素
  2. 数列在整体大的趋势上是递减,但是存在后一个元素比前一个元素稍大一点的情况(算作正常)
  3. 数列中存在连续的 N 个异常元素,第一个异常元素前面附近元素最后一个异常元素后面附近元素远小于该 N 个异常元素的最小值
  4. 对于上述描述中的 稍大附近元素远小于等词汇,如需精确数值,请自行定义
  • 例如 50,51,45,40,200,39,30,20 中的 200
  • 例如 50,52,40,40,150160150,41,38 中的 150160150
  • 例如 652,638,642,18291829182918291829,639,587,577,550 中的 5 个 1829

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

煮茶煮酒煮时光 2022-09-18 20:26:05

这个其实很简单的,写个循环就找出来了嘛。

function findAscElement(list) {
  let normalIndex // 保存最后正常的索引
  let result = []
  for (let idx in list) {
    if (idx == 0) {
      normalIndex = idx
      continue
    }
    // 遍历与最后正常的索引值对比
    if (list[idx] > list[normalIndex]) {
        result.push(idx)    
    } else {
      normalIndex = idx
    }
  }
  return result
}

let list = [100, 99, 90, 91, 92, 89, 11]
console.log(findAscElement(list))
负佳期 2022-09-18 20:26:05

主要是定义一下容忍度,就是递减趋势中,允许多大范围的跳变,后面比前面的大的范围,1倍还是2倍以内,还是比数列前一个不能大于百位,或千位,或是不能超过目前数列出现的最大值,比如第一个元素为参考,定义好这个容忍度判断,就比较容易了

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文