Dart é bom para estruturas de dados e algoritmos?
Sim. O Dart é tipado e baseado em classes, com um formato próximo ao de Java ou C#, então uma classe Node<T> com um next anulável é exatamente o que parece, e dart:collection cobre mais do que a maioria das bibliotecas padrão. Vale saber duas coisas: o SDK principal não tem fila de prioridade, e um literal de Map ou de Set é um LinkedHashMap ou um LinkedHashSet, que lembra a ordem de inserção: prático para a saída, mas não é a mesma promessa de um map ordenado.
Quais classes do Dart correspondem a quais estruturas de dados?
List é um array dinâmico e a sua pilha; Map e Set são tabelas hash, ordenadas por inserção por padrão; dart:collection acrescenta Queue (uma ListQueue, um buffer circular, a menos que você escolha DoubleLinkedQueue), LinkedList para entradas que estendem LinkedListEntry, e SplayTreeMap e SplayTreeSet, árvores ordenadas autoajustáveis. Para um heap, o package:collection da equipe do Dart oferece PriorityQueue. Tries e grafos você mesmo escreve.
O Dart tem fila de prioridade?
Não no SDK principal. dart:collection para nas filas, listas ligadas e splay trees, e PriorityQueue fica em package:collection, um pacote que a equipe do Dart mantém, mas que você mesmo adiciona. Isso faz de um heap algo justo para uma entrevista de Dart pedir que você escreva, e o passo dois é onde você escreve um.
O que é uma splay tree, e quando devo usar SplayTreeMap?
Uma splay tree é uma árvore binária de busca autoajustável: todo acesso move para a raiz o nó que ele tocou, então as chaves usadas recentemente são rápidas de alcançar de novo, e as operações custam O(log n) amortizado, não garantido em cada chamada individual. Use SplayTreeMap quando você precisa das chaves em ordem, da menor ou da maior chave, ou da chave mais próxima de cada lado de um valor, com firstKeyAfter e lastKeyBefore. A árvore AVL que você constrói no passo dois segue o caminho oposto, rebalanceando a cada mudança para manter a altura estritamente limitada.
Quais cursos desta trilha não são ensinados em Dart?
Três: programação dinâmica e a série de entrevistas em Python, ensinadas em Python, e manipulação de bits, ensinada em C++. Eles aparecem listados depois dos passos, cada um com um link que o abre na própria linguagem. Uma tabela de memoização em Dart é uma List ou um Map, e toRadixString(2) imprime um int em binário, o jeito mais rápido de conferir o que uma máscara realmente guarda.
Preciso saber Dart antes de começar esta trilha?
Classes, generics, listas, maps e null safety, no mínimo. Se isso for novidade, o curso de Dart da Coddy te leva até esse ponto primeiro, de graça, e esta trilha continua de onde ele termina.