Scala列表找到元素的最小差异

时间:2014-12-05 08:25:42

标签: scala

我的scala列表如下

List(12,14,16,18,20,22,28,30)

现在我的预期输出是以这种方式查找与30-28=2,28-22=6,22-20=2....之类的反向顺序列表的差异所以我的新列表将是

List(2,6,2,2,2,2,2)

从此列表中获取最常见的值,因此在这种情况下,最小差异为2,因此最终输出将是最小差异,即2。

2 个答案:

答案 0 :(得分:7)

只是要有sliding的解决方案。 :)

List(12,14,16,18,20,22,28,30).sliding(2).map(l => l(1) - l(0)).min

答案 1 :(得分:3)

您可以zip列表及其尾部,以获得l zip l.tail(l, l.tail).zipped的元素对。

val l = List(12,14,16,18,20,22,28,30)

(l, l.tail).zipped.map{ (a, b) => math.abs(a - b) }.min
// 2