想提高我的算法技巧。
例如,这样的任务
需要按下一规则合并两个列表
* ListA = 1 2 4 6 100
* ListB = 5 200
* ListRes = 1 2 4 5 6 100 200
这里是实现
@tailrec
def mergeList(a: List[Int], b: List[Int], res: List[Int]): List[Int] = {
if (a.isEmpty) return res ::: b
if (b.isEmpty) return res ::: a
if (a.head < b.head) mergeList(a.tail, b, res ::: List(a.head)) else
mergeList(a, b.tail, res ::: List(b.head))
}
检查单元测试:
test("testMergeList") {
val a = List(1, 6, 7, 8, 40)
val b = List(1, 7, 8, 9, 11, 20, 100)
println(Workout.mergeList(a, b, List()))
println(Workout.mergeList(b, a, List()))
assert(Workout.mergeList(a, b, List()) equals List(1, 1, 6, 7, 7, 8, 8, 9, 11, 20, 40, 100))
assert(Workout.mergeList(b, a, List()) equals List(1, 1, 6, 7, 7, 8, 8, 9, 11, 20, 40, 100))
}
你能推荐一些这样的资源吗?
我可以在哪里发布和讨论我的实现?
谢谢。
最佳答案
您可以使用Hacker Rank来解决许多(并非总是功能性的)问题。
此外,红皮书(scala中的函数式编程)在github上的解决方案方面也有很大的问题。
最后,不用说回答这些问题是获得你想要的东西的另一个好方法。