gpt4 book ai didi

algorithm - Scala 提取列表中相差 1 (Ints) 的邻居

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:31:40 25 4
gpt4 key购买 nike

我目前正在尝试提取列表中相差 1 的邻居。例如,如果我的列表是这样的:

List(1,2,3,7,8,10,13,14)
//By extracting I want to get:
List(
List(1,2,3),
List(7,8),
List(10),
List(13,14)
)

我已经通过 foldLeft 自己尝试过,我觉得我很接近但到目前为止。谁能帮我?有什么建议么? ^^太感谢了! :)

最佳答案

这是一个使用 foldRight 的解决方案:

val oldList = List(1, 2, 3, 7, 8, 10, 13, 14)

val newList = oldList.foldRight[List[List[Int]]](Nil)((a, b) => b match {
case (bh @ bhh :: _) :: bt if (bhh - a == 1) => (a :: bh) :: bt
case _ => (a :: Nil) :: b
})

因此,我们向后迭代条目,并根据差异是否为 1 添加到现有头列表的前面或添加新的头列表:

Nil
(14, ...) => (14 :: Nil) :: Nil
(13, ...) => (13 :: 14 :: Nil) :: Nil
(10, ...) => (10 :: Nil) :: (13 :: 14 :: Nil) :: Nil
...

我有一段时间没有使用 Scala,所以这可能不是最好的解决方案,但我希望你明白这一点。

关于algorithm - Scala 提取列表中相差 1 (Ints) 的邻居,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52018499/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com