Executando verificação de segurança...
3

Cara, esses problemas de leet code, beecrowd, maratona e etc, sempre já são manjandos, igual 98% dos problemas da programação, você tem que saber que existe, por que algum fdp no quarto escuro da sua casa já pensou em uma solução 100x melhor que a sua. Exige bastante estudo e a maior parte desses estudos que vejo são, ou vieram, de livros e/ou artigos acadêmicos, livros como Algoritmos vão te apresentar 80% dos algoritmos e estrutura de dados, além de uma base matemática (pode ter outros livros só com foco em problemas como do leet code, mas desconheço). Os outros 20% você vai aprender da forma que fez mesmo, tentando resolver, gastando neurônio, se fudendo e no final vendo a solução de um indiano, e tendo aquele Insight Ahhhh! Já existe um técnica pra resolver exatamente problemas como esse, igual design patterns no âmbito da arch.

Deixando minha contribuição, as técnicas mais famosas que conheço são essas.

  • Todos algoritmos envolvendo arvores (bfs, dfs, balance tree...)
  • Todos algoritmos envolvendo grafos
  • Dynamic programming (bottom-up e top-down)
  • Entender que alguns algoritmos são NP e vão ter uma solução ideal, e não a melhor
  • greedy algorithms
  • backtracking
  • dividir pra conquistar
  • sliding window
Carregando publicação patrocinada...
1
1

Principalmente praticar, tenho alguns amigos da facul que focam em maratona, é estudando e praticando beecrowd e resolução de problemas todo dia.