Wollen Sie meine algorithmischen Fähigkeiten verbessern. Zum Beispiel Aufgabe wie dieseWorkout mit Scala und Algorithmen
Need 2 Listen von der nächsten Regel fusionieren
* ListA = 1 2 4 6 100
* ListB = 5 200
* ListRes = 1 2 4 5 6 100 200
Hier ist die Umsetzung
@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))
}
Unit-Test zur Überprüfung:
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))
}
Could empfehlen Sie bitte einige Ressourcen mit solchen Aufgaben?
Wo kann ich meine Implementierung posten und diskutieren?
Danke.
Ihre Lösung ist eigentlich sehr schlecht. Etwas wie 'a ++ b sorted' ist auch nicht optimal, aber viel besser als deins (und viel kürzer;)). – Dima
Wohin Sie es posten und diskutieren können, sehen Sie sich codereview: http://codereview.stackexchange.com/ – Dima
Dies scheint nicht eine richtige Frage SO. –