Este repositório é dedicado ao estudo e implementação de algoritmos e estruturas de dados. Ele abrange uma variedade de tópicos essenciais para desenvolvedores de software, proporcionando um recurso valioso para a compreensão e aplicação prática de conceitos fundamentais em ciência da computação.
-
Big(O): Introdução ao conceito de complexidade assintótica.
-
Arrays (Vetores): Implementação e manipulação de arrays.
-
Hashing / Map: Exploração de estruturas de dados baseadas em hash.
-
Two Pointers (Dois Ponteiros): Técnica para otimizar a busca em determinados problemas.
-
Stack (Pilhas): Implementação e aplicação de pilhas.
-
Binary Search (Busca Binária): Técnica de busca eficiente em conjuntos ordenados.
-
Sliding Window: Técnica para otimizar a manipulação de subconjuntos em sequências.
-
Quick Sort: Algoritmo de ordenação eficiente.
-
Recursão: Exploração de algoritmos recursivos.
-
Linked List (Lista Ligada): Implementação e manipulação de listas ligadas.
-
Doubly Linked List (Lista Duplamente Ligada): Estrutura de lista ligada com ponteiros para frente e para trás.
-
DEQUE (Double Ended Queue): Implementação e aplicação de filas de dupla extremidade.
-
Tree (Árvore): Implementação e manipulação de árvores.
-
Trie: Estrutura de dados especializada para armazenar um conjunto dinâmico ou associativo onde as chaves são geralmente strings.
-
Backtracking: Técnica para encontrar todas as soluções para um problema através da exploração sistemática.
-
Heap/Priority Queue: Estrutura de dados para manter elementos com prioridades.
-
Intervals: Técnica para manipulação de intervalos em conjuntos ordenados.
-
Graph (Grafos): Implementação e manipulação de grafos.
-
Dijkstra Algorithm: Algoritmo para encontrar o caminho mais curto em um grafo com pesos não negativos.
-
A* Algorithm: Algoritmo de busca heurística eficiente.
-
Dynamic Programming: Técnica de otimização de problemas dividindo-os em subproblemas sobrepostos.
-
Kadane's Algorithm: Algoritmo eficiente para encontrar a maior soma de subconjunto contíguo em uma sequência numérica.
-
Greedy (Algoritmos Gulosos): Estratégia de resolução de problemas que faz a escolha localmente ótima em cada estágio com a esperança de encontrar uma solução global ótima.
-
Bit Manipulation: Manipulação de bits para otimização de operações.
-
Math & Geometry (Matemática e Geometria): Tópicos adicionais relacionados a matemática e geometria.
-
Tortoise Hare Algorithm: Algoritmo envolvendo duas variáveis que percorrem uma sequência com diferentes velocidades.
Este repositório proporciona uma abordagem prática e abrangente para o aprendizado e aplicação de algoritmos e estruturas de dados, tornando-se uma valiosa fonte de referência para estudantes e profissionais de desenvolvimento de software.
Se você deseja contribuir para este projeto, siga estas etapas:
Faça um fork do repositório. Crie uma branch para suas alterações:
git checkout -b feature/nova-funcionalidade.
Faça as alterações desejadas e commit:
git commit -m 'Adiciona nova funcionalidade'.
Push para a branch:
git push origin feature/nova-funcionalidade.
Abra um pull request descrevendo suas alterações.
Este projeto está licenciado sob a Licença MIT - veja o arquivo LICENSE. para detalhes.
Robson Carvalho |