【发布时间】:2015-11-19 22:04:24
【问题描述】:
给定一个像[15, 14, 12, 3, 10, 4, 2, 1] 这样的数组。如何确定哪些元素出现故障并删除它们(在本例中为数字 3)。我不想对列表进行排序,而是检测异常值并将其删除。
另一个例子:
[13, 12, 4, 9, 8, 6, 7, 3, 2]
我希望能够删除 #4 和 #7 以便我最终得到:
[13, 12, 9, 8, 6, 3, 2]
当你遇到这种情况时也会出现一个问题:
[15, 13, 12, 7, 10, 5, 4, 3]
您可以删除 7 或 10 以使该数组排序。
一般来说,我要解决的问题是,给定一个数字读数列表(有些可能会偏离很多)。我希望数组只包含遵循一般趋势线的值并删除任何异常值。我只是想知道是否有一种简单的方法可以做到这一点。
【问题讨论】:
-
你能删除第一个满足:
a[i] < a[i + 1]的元素吗? (O(n)) -
您要删除最少数量的元素,还是任意数量都可以?
-
我喜欢@higuaro 的这个想法,但是我该如何处理多个异常值元素呢?
-
@PhamTrung 最低限度(如果可能)
标签: arrays algorithm sorting outliers trendline