Eignet sich Dart für Datenstrukturen und Algorithmen?
Ja. Dart ist typisiert und klassenbasiert, in der Form nah an Java oder C#, also ist eine Klasse Node<T> mit einem next, das null sein kann, genau das, wonach sie aussieht, und dart:collection deckt mehr ab als die meisten Standardbibliotheken. Zwei Dinge solltest du wissen: Das Kern-SDK hat keine Prioritätswarteschlange, und ein Literal für Map oder Set ist eine LinkedHashMap oder ein LinkedHashSet, das sich die Einfügereihenfolge merkt: praktisch für Ausgaben, aber nicht dasselbe Versprechen wie eine sortierte Map.
Welche Dart-Klassen entsprechen welchen Datenstrukturen?
List ist ein dynamisches Array und dein Stack; Map und Set sind Hashtabellen, standardmäßig in Einfügereihenfolge; dart:collection ergänzt Queue (eine ListQueue, also ein Ringpuffer, sofern du nicht DoubleLinkedQueue wählst), LinkedList für Einträge, die LinkedListEntry erweitern, sowie SplayTreeMap und SplayTreeSet, selbstanpassende geordnete Bäume. Für einen Heap stellt package:collection vom Dart-Team PriorityQueue bereit. Tries und Graphen schreibst du selbst.
Hat Dart eine Prioritätswarteschlange?
Nicht im Kern-SDK. dart:collection hört bei Queues, verketteten Listen und Splay-Bäumen auf, und PriorityQueue steckt in package:collection, einem Paket, das das Dart-Team pflegt, das du aber selbst hinzufügst. Damit ist ein Heap etwas, das ein Dart-Interview fairerweise von dir verlangen kann, und in Schritt zwei schreibst du einen.
Was ist ein Splay-Baum, und wann sollte ich SplayTreeMap verwenden?
Ein Splay-Baum ist ein selbstanpassender binärer Suchbaum: Jeder Zugriff bewegt den berührten Knoten an die Wurzel, sodass kürzlich genutzte Schlüssel schnell wieder erreichbar sind, und Operationen kosten amortisiert O(log n), nicht garantiert bei jedem einzelnen Aufruf. Nimm SplayTreeMap, wenn du Schlüssel in sortierter Reihenfolge brauchst, den kleinsten oder größten Schlüssel oder mit firstKeyAfter und lastKeyBefore den nächstgelegenen Schlüssel auf beiden Seiten eines Werts. Der AVL-Baum, den du in Schritt zwei baust, geht den anderen Weg und balanciert sich bei jeder Änderung neu, damit seine Höhe streng begrenzt bleibt.
Welche Kurse auf diesem Pfad werden nicht in Dart unterrichtet?
Drei: Dynamische Programmierung und die Python-Interviewreihe werden in Python unterrichtet, Bitmanipulation in C++. Sie sind nach den Schritten aufgeführt, jeweils mit einem Link, der den Kurs in seiner eigenen Sprache öffnet. Ein Memo ist in Dart eine List oder eine Map, und toRadixString(2) gibt einen int binär aus, der schnellste Weg, um zu prüfen, was eine Maske tatsächlich enthält.
Muss ich Dart können, bevor ich mit diesem Pfad anfange?
Mindestens Klassen, Generics, Listen, Maps und Null-Safety. Wenn das neu für dich ist, bringt dich Coddys Dart-Kurs zuerst dorthin, kostenlos, und dieser Pfad setzt dort an, wo er endet.