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

Quais seriam as Técnicas PRECIOSAS em programação/algoritmos?

Eae, pessoal. Como estão? Tudo 100%? Hoje eu estava fazendo um desafio no Leetcode e, apesar dos meus esforços, o meu código não passava em todos os testes (faltavam só 2 -_-). Após queimar alguns neurônios, tentando assimilar outra forma de resolver o problema, decidi consultar as submissões feitas por outros usuários.

Encontrei, portanto, um sujeito indiano que fez uma solução em Java, superando 100% dos usuários naquele desafio 0_0. Ele fez um vídeo explicando o seu algoritmo e notei uma técnica diferente, que talvez possa ser utilizada com eficácia em outras questões. Ele usou uma Iteração Reversa (backward iteration) - ou algo do tipo. Pode ser que essa não seja uma tééécnica super relevante, mas achei interessante o conceito e como a aplicação dele ajudou a resolver o problema.

Porém, para saber onde aplicar uma determinada técnica também é necessária uma percepção aguçada em relação à lógica do problema, concordam? Admito que ainda não entendi o raciocínio do cara pelo vídeokkkkkkk. Mas gostei de descobrir que há técnicas, truques ou até feitiços (para quem também gosta de imaginar e curte jogos ou fantasia).

Então, gostaria de ouvir de vocês. Quais técnicas de programação marcantes ou pertinentes que vocês já descobriram e para qual problema elas funcionam?

Carregando publicação patrocinada...
3

Algoritmos de grafos: Os grafos são uma ferramenta poderosa que podem ser usados para resolver uma ampla gama de problemas. Quase tudo pode ser modelado como um grafo, e aí diversos algoritmos podem ser aplicados para encontrar diversas soluções de forma eficiente. Os algoritmos de grafos mais comuns (e que todo programador deve conhecer) incluem busca em largura (BFS), busca em profundidade (DFS), árvore geradora mínima (MST) e caminho mais curto.

2

Já vi alguma coisa na faculdade sobre caminho mais curto, mas essas outras aí nunca ouvi falar 0_0.

Essa descrição ficou perfeita pra entender o valor desses algoritmos. Com certeza vou estudá-los. Muito obrigado pela resposta.

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
1
1

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

1
0