Manual de liberação de algoritmo (LeetCode)
01. Introdução ao Projeto
Um tutorial para explicar o conhecimento básico de "Algoritmo e Estrutura de Dados" e uma análise detalhada de mais de 800 questões em "LeetCode". Este projeto é fácil de entender e não há grandes saltos de pensamento. Algumas ilustrações e exemplos são usados no projeto para ajudar na compreensão.
Este tutorial começa com estruturas de dados e algoritmos básicos e, em seguida, explica e analisa tópicos específicos para diferentes categorias de estruturas de dados e algoritmos. Ele permite que os leitores dominem completamente o conhecimento de algoritmos por meio de uma combinação de "aprendizado teórico básico de algoritmos" e "aprendizado prático de programação".
Este tutorial usa Python como linguagem de programação e exige que os alunos tenham conhecimento básico e experiência em programação Python.
02. Endereço do projeto
Bem-vindo "Star ️" e "Fork" no canto superior direito, este é o meu maior incentivo e apoio.
- Endereço GitHub: https://github.com/itcharge/LeetCode-Py
Um e-book online "Manual de depuração de algoritmo" que suporta o modo escuro.
- Endereço do e-book: https://algo.itcharge.cn
03. Sobre o autor
Sou programador de desenvolvimento iOS/macOS e também estudante de mestrado em meio período (atualmente estudando) no Beihang Software Institute. Estudei conhecimentos de algoritmos na faculdade e participei de competições da ACM por três anos, mas meu nível era limitado e não consegui alcançar os resultados ideais. Mas o maior ganho para mim com esses três anos de experiência em ACM é que desenvolvi meu pensamento lógico e minha capacidade de resolver problemas práticos. Essa habilidade estabeleceu uma base sólida para meu trabalho e estudo futuros.
Comecei a resolver questões no LeetCode todos os dias em 30 de março de 2021. Em 8 de junho de 2022, havia resolvido mais de 1.000 questões e concluído mais de 800 soluções de problemas. Trabalhe duro para resolver mais de 1.000, 1.500, 2.000 questões.
Responda " Algoritmo Check-in " na conta pública "Programmer Charging Station" e você será adicionado ao grupo de plano de check-in do algoritmo LeetCode para formar uma equipe e fazer check-in juntos.
- Senha para entrar no grupo: Algoritmo de check-in
- Requisitos para ingressar no grupo: menos bate-papo, mais compartilhamento e alteração de notas.
04. Declaração de direitos autorais
- Este tutorial está licenciado sob uma Licença Internacional Creative Attribution-NonCommercial-NoDerivs (BY-NC-ND) 4.0.
- Os direitos autorais de todas as perguntas deste tutorial pertencem à LeetCode e à LeetCode China.
05. Índice do Capítulo
00. Introdução
- Algoritmos e Estruturas de Dados
- Complexidade algorítmica
- Introdução ao LeetCode e estratégias
- Soluções de problemas LeetCode (classificação lexicográfica, mais de 850 soluções de problemas)
- Soluções de problemas LeetCode (classificadas por categoria, lista de problemas recomendados ★★★)
- As 100 perguntas mais frequentes da entrevista do LeetCode (classificadas por categoria)
- As 200 perguntas mais frequentes nas entrevistas LeetCode (classificadas por categoria)
01. Matriz
- Noções básicas de matriz
- Noções básicas de matriz
- Organize perguntas básicas
- Algoritmo de classificação de array
- classificação de bolha
- ordenação por seleção
- ordenação por inserção
- Tipo de colina
- classificação por mesclagem
- Classificação rápida
- Classificação de pilha
- classificação de contagem
- classificação de balde
- Classificação de raiz
- Pergunta de classificação de array
- pesquisa binária
- Conhecimento de pesquisa binária (1)
- Conhecimento de pesquisa binária (2)
- Pergunta de pesquisa binária
- Matriz de ponteiro duplo
- Conhecimento de ponteiro duplo de array
- Pergunta de ponteiro duplo de array
- Janela deslizante de matriz
- Conhecimento de janela deslizante de matriz
- Pergunta sobre janela deslizante de matriz
02. Lista vinculada
- Conhecimento básico de listas vinculadas
- Conhecimento básico de listas vinculadas
- Perguntas clássicas da lista vinculada
- Classificação de lista vinculada
- Conhecimento de classificação de lista vinculada
- Pergunta de classificação de lista vinculada
- Ponteiro duplo de lista vinculada
- Conhecimento sobre ponteiros duplos de lista vinculada
- Pergunta de ponteiro duplo de lista vinculada
03. Pilha
- Noções básicas de pilha
- Noções básicas de pilha
- Empilhe perguntas básicas
- pilha monotônica
- Conhecimento de pilha monótona
- Pergunta de pilha monótona
04. Fila
- Noções básicas de fila
- Noções básicas de fila
- Enfileirar perguntas básicas
- fila de prioridade
- Conhecimento de fila prioritária
- pergunta da fila de prioridade
05. Tabela hash
- Conhecimento de tabela hash
- Pergunta sobre tabela hash
06. Corda
- Noções básicas de cordas
- Noções básicas de cordas
- String perguntas clássicas
- Correspondência de string de padrão único
- Algoritmo de Força Bruta
- Algoritmo de Rabin Karp
- Algoritmo KMP
- Algoritmo de Boyer Moore
- Algoritmo Horspool
- Algoritmo de domingo
- Pergunta de correspondência de string de padrão único
- Correspondência de sequência de padrões múltiplos
- Conhecimento da árvore do dicionário
- Pergunta sobre árvore de dicionário
- Conhecimento de máquina automática AC
- Problema com autômato AC
- Conhecimento de matriz de sufixos
- Pergunta sobre matriz de sufixo
07. Árvore
- Árvore binária
- Conhecimento básico de árvores e árvores binárias
- Conhecimento de travessia de árvore binária
- Problema de passagem de árvore binária
- Conhecimento de restauração de árvore binária
- Problema de restauração de árvore binária
- árvore de pesquisa binária
- Conhecimento da árvore de pesquisa binária
- Pergunta sobre árvore de pesquisa binária
- Árvore de segmento
- Conhecimento da árvore de segmentos
- Pergunta sobre árvore de segmento de linha
- matriz de árvore
- Conhecimento de matriz de árvore
- Pergunta sobre matriz de árvore
- E pesquise a coleção
- e busque conhecimento
- E confira as perguntas
08. Teoria dos grafos
- Conhecimento básico de gráficos
- Definição e classificação de gráficos
- Estrutura de armazenamento de gráfico e aplicação de problema
- Percurso gráfico
- Pesquisa profunda por conhecimento sobre gráficos
- Primeiro problema de pesquisa em profundidade para gráficos
- Pesquisa ampla por conhecimento em gráficos
- Primeira pergunta de pesquisa sobre amplitude do gráfico
- Conhecimento de classificação topológica de gráficos
- Pergunta de classificação topológica de gráfico
- Árvore geradora do gráfico
- Conhecimento mínimo de spanning tree para gráficos
- Problema de árvore geradora mínima para gráficos
- caminho mais curto
- Conhecimento do caminho mais curto de fonte única (1)
- Conhecimento do caminho mais curto de fonte única (2)
- Problema do caminho mais curto de fonte única
- Conhecimento do caminho mais curto de múltiplas fontes
- Problema do caminho mais curto de múltiplas fontes
- Conhecimento do caminho mais curto
- Segunda questão do caminho curto
- Conhecimento do sistema de restrição diferencial
- Questões do sistema de restrições diferenciais
- gráfico bipartido
- Conhecimento básico de gráficos bipartidos
- Perguntas básicas sobre gráficos bipartidos
- Conhecimento máximo de correspondência do gráfico bipartido
- Algoritmo húngaro
- Algoritmo Hopcroft-Karp
- Problema de correspondência máxima de gráfico bipartido
09. Algoritmo básico
- Algoritmo de enumeração
- Conhecimento de algoritmo de enumeração
- Perguntas sobre algoritmo de enumeração
- algoritmo recursivo
- Conhecimento de algoritmo recursivo
- Perguntas sobre algoritmos recursivos
- algoritmo de dividir e conquistar
- Divida e conquiste o conhecimento do algoritmo
- Perguntas sobre algoritmo de divisão e conquista
- Algoritmo de retrocesso
- Conhecimento do algoritmo de retrocesso
- Perguntas sobre algoritmo de retrocesso
- algoritmo ganancioso
- Conhecimento de algoritmo ganancioso
- Pergunta sobre algoritmo ganancioso
- Operações de bits
- Conhecimento de operação de bits
- Perguntas sobre operação de bits
10. Programação dinâmica
- Noções básicas de programação dinâmica
- Noções básicas de programação dinâmica
- Perguntas básicas sobre programação dinâmica
- Pesquisa memorizada
- Conhecimento de busca de memória
- Perguntas de busca de memória
- DP linear
- Conhecimento de DP linear (1)
- Conhecimento de DP linear (2)
- Pergunta DP linear
- problema de mochila
- Conhecimento do problema da mochila (1)
- Conhecimento sobre problemas de mochila (2)
- Conhecimento sobre problemas de mochila (3)
- Conhecimento sobre o problema da mochila (4)
- Conhecimento sobre problemas de mochila (5)
- questões sobre problemas de mochila
- Intervalo DP
- Conhecimento de DP de intervalo
- Pergunta de intervalo DP
- Árvore DP
- Conhecimento de árvore DP
- Pergunta sobre árvore DP
- DP de compressão de estado
- Conhecimento DP de compressão de estado
- Pergunta DP de compressão de estado
- Contagem DP
- Contando Conhecimento DP
- Contando perguntas DP
- DP Digital
- Conhecimento de DP digital
- Perguntas sobre DP digital
- Probabilidade DP
- Conhecimento de probabilidade DP
- Perguntas de DP de probabilidade
- Otimização de programação dinâmica
- Otimização de pilha monótona/fila prioritária
- Otimização de Inclinação
- Otimização da desigualdade quadrilátera
- Problema de otimização de programação dinâmica
11. Conteúdo adicional
- Cronograma de conclusão do conteúdo
12. Soluções de problemas LeetCode (860 questões concluídas)