Python é bom para estruturas de dados e algoritmos?
Sim, e para aprender dá para dizer que é a melhor escolha: o código é curto, então o que você lê é o algoritmo, não a sintaxe em volta dele. Vale conhecer duas contrapartidas. Python roda mais devagar que Java ou C++, o que importa nos limites de tempo apertados da programação competitiva, mas raramente numa entrevista, e as estruturas embutidas escondem os custos sobre os quais você está aprendendo a raciocinar; é por isso que esta trilha faz você construí-las primeiro.
Quais estruturas de dados do Python devo conhecer para entrevistas de programação?
list (um array dinâmico), dict e set (tabelas hash), tuple, collections.deque (uma fila rápida nas duas pontas), heapq (um min-heap binário sobre uma lista) e collections.Counter. Saiba quanto custa cada operação, não só o nome dela. Python não tem lista ligada, árvore, trie nem grafo embutidos, então esses você mesmo escreve, nos passos um e dois.
Por que implementar uma pilha ou uma fila se o Python já tem as duas?
Porque as entrevistas raramente pedem que você use uma fila e muitas vezes perguntam por que a sua solução está lenta. Uma fila construída sobre uma list paga por cada pop(0), porque todos os elementos restantes se deslocam uma posição; deque.popleft() não. Implementar cada estrutura uma vez é como você aprende os custos bem o bastante para escolher a certa sem pensar.
Python é rápido o bastante para programação competitiva?
Para a maioria dos problemas, sim. Com limites de tempo apertados, C++ é a escolha mais segura, razão pela qual a maioria dos programadores competitivos o usa, e muitos juízes online oferecem PyPy, que roda o mesmo código Python bem mais rápido. Numa entrevista, a velocidade com que você escreve importa muito mais do que a velocidade com que o código roda, e aí o Python ganha.
Qual é o limite de recursão do Python, e ele importa para DSA?
Por padrão, o CPython para numa profundidade de 1.000 chamadas, então uma busca em profundidade recursiva sobre uma cadeia longa pode lançar RecursionError. Dá para aumentar o limite com sys.setrecursionlimit, mas o melhor hábito, e o que os entrevistadores gostam de ver, é saber trocar a recursão por um laço e uma pilha explícita: a estrutura que você constrói no passo um.
Preciso saber Python antes de começar esta trilha?
Você deve estar à vontade com funções, laços, listas e dicionários e, de preferência, com classes, já que cada estrutura aqui é escrita como uma classe. Se você ainda não chegou lá, o curso de Python da Coddy te leva até esse ponto primeiro, de graça, e esta trilha continua de onde ele termina.