Cheat sheet

Condições, fórmulas e decisões para consulta rápida, com ligações às provas.

Perguntar sobre esta página

ChatGPTClaudePerplexityGrokGeminiCopiar e abrirDeepSeekCopiar e abrir

n conta elementos, h mede altura em arestas, V,E contam vértices e arestas. Custos de comparação e hash são constantes só com chaves de dimensão limitada. Consulta aqui a condição; a demonstração está no capítulo ligado.

Prova e contagem

Precisas deUsa
ContratoPré do chamador e pós do algoritmo, com empates e vazio
CicloInício, manutenção, implicação à saída e medida que diminui
RecursãoCaso base e hipótese nos menores

OO limita por cima, Ω\Omega por baixo, Θ\Theta pede os dois. Média exige distribuição. Amortizado limita sequências sem sorteio.

PadrãoCusto
Um percursoΘ(n)\Theta(n)
n interiores por cada exteriorΘ(n2)\Theta(n^2)
1+…+nΘ(n2)\Theta(n^2)
Duplicar de i=1 enquanto i<n, n>=1⌈log⁡2n⌉\lceil\log_2 n\rceil iterações
Duplicar com interior proporcional a iΘ(n)\Theta(n)
Metade com junção linearΘ(nlog⁡n)\Theta(n\log n)
Prefixos e q somasΘ(n+q)\Theta(n+q) com p[r]−p[l]p[r]-p[l]
Janela k em NΘ(N)\Theta(N) com retira a[i-1] e junta a[i+k-1]

Provas e recorrências.

Pesquisa e ordenação

Binária em vetor ordenado: O(log⁡(n+1))O(\log(n+1)). Em [l,r), m=l+(r-l)/2. Linear sem ordem: Θ(n)\Theta(n).

LimitePrimeiroDescarta esquerda com
Lower>=xv[m]<x
Upper>xv[m]<=x

Contagem de x: upper menos lower. Podem devolver n. Resposta monótona inclui o custo do teste.

OrdenaçãoPiorExtraEmpates
SeleçãoΘ(n2)\Theta(n^2)O(1)O(1)Não
InserçãoΘ(n2)\Theta(n^2)O(1)O(1)Sim
MergeΘ(nlog⁡n)\Theta(n\log n)O(n)O(n)Sim, esquerda primeiro
QuicksortΘ(n2)\Theta(n^2)Pilha até O(n)O(n)Não
HeapsortO(nlog⁡n)O(n\log n)O(1)O(1)Não
CountingΘ(n+k)\Theta(n+k)O(n+k)O(n+k)Sim, da direita

Comparar tem limite Ω(nlog⁡n)\Omega(n\log n). sort pede ordem fraca estrita e não é estável. Radix exige passagem estável. Limites e traços.

Estruturas e geometria

OperaçãoVetorLista simples
Consultar índice iO(1)O(1)O(n)O(n)
Inserir na frenteO(n)O(n) por deslocaçãoO(1)O(1)
Consultar o fimO(1)O(1)O(1)O(1) com cauda, O(n)O(n) sem ela
Inserir no fimO(1)O(1) amortizadoO(1)O(1) com cauda
Remover no fimO(1)O(1)O(n)O(n) sem anterior na simples
Inserir depois de nó conhecidoDesloca os seguintesO(1)O(1)
Remover nó conhecidoDesloca os seguintesO(n)O(n) sem anterior na simples

Pilha é LIFO, fila é FIFO, deque aceita ambas as pontas. Duas pilhas fazem fila se transferirem só com saída vazia. TADs e ligações.

Orientação: (qx−px)(ry−py)−(qy−py)(rx−px)(q_x-p_x)(r_y-p_y)-(q_y-p_y)(r_x-p_x). Positivo vira à esquerda. Graham ordena em O(nlog⁡n)O(n\log n) e varre em O(n)O(n). Ponto em convexo com c vértices: O(log⁡c)O(\log c). Envolvente.

Árvores

Vazio tem altura -1 e folha tem altura 0. Para um nó com alturas h_e e h_d nas subárvores, h=1+max⁡(he,hd)h=1+\max(h_e,h_d). Pré visita raiz, esquerda e direita; em visita esquerda, raiz e direita; pós visita esquerda, direita e raiz. Cada percurso custa Θ(n)\Theta(n). Binárias.

BST exige ordem global, não só pai-filho. Operações O(h+1)O(h+1), pior O(n)O(n). Dois filhos troca com sucessor. BST.

AVLRepara com
LLDireita
RREsquerda
LREsquerda no filho, direita no nó
RLDireita no filho, esquerda no nó

Vermelha-preta: raiz e NIL pretos, sem vermelhos seguidos, mesma altura preta. Altura até 2log⁡2(n+1)2\log_2(n+1). Equilíbrio.

Hash, heaps e grafos

Procuras em hashCondição
Provar desigualdadeHash diferente prova; hash igual não prova igualdade
Custo do encadeamentoO(1+α)O(1+\alpha) em média, α=n/m\alpha=n/m, sob dispersão uniforme e custos constantes
Remover em abertoMarca apagada: a pesquisa atravessa, a inserção memoriza e continua até excluir duplicado
Passo duplo válidoCoprimo com m; com m primo, qualquer 1≤passo<m1\le passo<m

Dispersão.

Com n>0 elementos em vetor zero-based, os filhos de i são 2i+1,2i+2 e o pai de i>0 é ⌊(i−1)/2⌋\lfloor(i-1)/2\rfloor com divisão inteira. Topo O(1)O(1) com heap não vazio, alteração O(log⁡n)O(\log n), construção Θ(n)\Theta(n). Heaps.

Listas O(V+E)O(V+E), matriz O(V2)O(V^2). BFS usa fila e dá o menor número de arestas, só em grafos sem pesos. DFS usa pilha.

ProcurasCondiçãoAção
Ciclo dirigidoAresta para vértice cinzentoSegue os pais até ao antepassado
Ordem válidaDAG confirmado: Kahn retira os V vérticesUsa a ordem de saída; incompleta não serve
Componente fechadalow[u]==disc[u] em TarjanRetira da pilha até u
Ponte numa aresta u->v da árvore DFS, grafo não dirigidolow[v]>disc[u]Marca u-v; paralelas anulam

Grafos e aplicações.

À tua maneira

Aparência

Modo de cor
Tema
Cor de destaque

Leitura

Fonte de leitura

Álgebra, lógica e uma ideia de cada vez.

Código

Fonte do código

Navegação

Cursor de leitura, sem edição. h, j, k, l movem; / pesquisa nesta página. v seleciona caracteres; V seleciona linhas; y copia. Tab permite destacar ou comentar. Espaço ou Enter abre blocos recolhíveis. Nos cartões, h, j, k, l mudam o foco.

CSS personalizado

Ativa uma sugestão ou guarda o teu CSS. Só muda este navegador.

Usa --page, --text e --accent para acompanhar o tema.

Seletores e recuperação

.site-header, .prose, .course-card, [data-reading-history], [data-playground] e .page-actions.

Abre a aparência com a tecla vírgula ou no rodapé. Se o CSS esconder os controlos, abre esta página sem CSS personalizado.

Pesquisar

Escreve para pesquisar em todo o site.

para escolher · Enter para abrir · Esc para fechar

Copiar fórmula

A cópia automática não está disponível. Copia o LaTeX abaixo.

Pesquisar nesta página

Enter procura · n / N repetem · Esc cancela. Ctrl / Cmd K pesquisa todo o site.

Atalhos de teclado

Clica numa tecla para a mudar. Esc cancela. Backspace desativa.

PesquisarCtrl / Cmd K

Os atalhos não interferem enquanto escreves. Tab e Enter funcionam sempre.