想提高我的算法技巧。
例如,这样的任务
需要按下一规则合并两个列表

* 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上的解决方案方面也有很大的问题。
最后,不用说回答这些问题是获得你想要的东西的另一个好方法。

09-11 18:31