【发布时间】:2014-12-21 14:02:09
【问题描述】:
想要一个 scala 方法,它可以从列表中查找数字,结果是基于给定数字的序列:
def findSeq(baseNum:Int, numbers: List[Int]): List[Int]
如果没有合适的数字,只需返回Nil:
给定:
a number: 3
a list of number: 5,9,2,4,10,6
它会返回:
List(4,5,6)
解释:
由于基数是 3,它会尝试从列表中找到 4。如果找到,尝试找到 5,然后是 6,直到没有找到预期的一个。只需返回找到的并对其进行排序。不需要关心重复的数字。
更多测试用例:
findSeq(3, Nil) === Nil
findSeq(3, List(3)) === Nil
findSeq(3, List(5,6)) === Nil
findSeq(3, List(4,5,7)) === List(4,5)
findSeq(3, List(4,7,6)) === List(4)
在 Scala 中寻找优雅的解决方案。
【问题讨论】:
-
为什么返回List(4,5,6)是什么逻辑?
-
先对数字进行排序。然后,删除所有小于
baseNum的数字。然后,从列表中的第一个数字开始,继续添加其他数字(按顺序),直到最后一个数字与倒数第二个数字之间的差不为 1。