0% acharam este documento útil (0 voto)
17 visualizações3 páginas

Problems

O documento aborda várias técnicas de algoritmos e estruturas de dados, incluindo Two Pointers, Sliding Window, e BFS/DFS, com suas descrições, aplicações e exemplos práticos. Cada técnica é apresentada com problemas específicos do LeetCode que ilustram sua utilização. O conteúdo é voltado para a resolução eficiente de problemas de programação.

Enviado por

n1c0l451lv4.32
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato TXT, PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
17 visualizações3 páginas

Problems

O documento aborda várias técnicas de algoritmos e estruturas de dados, incluindo Two Pointers, Sliding Window, e BFS/DFS, com suas descrições, aplicações e exemplos práticos. Cada técnica é apresentada com problemas específicos do LeetCode que ilustram sua utilização. O conteúdo é voltado para a resolução eficiente de problemas de programação.

Enviado por

n1c0l451lv4.32
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato TXT, PDF, TXT ou leia on-line no Scribd

1.

2 pointer:
2. Binary Tree BFS:
3. Topological Sort:
4. Binary Tree DFS:
5. Top K Elements:
6. Modified Binary Search
7. Subset:
8. Sliding window:

[Link]

1. Two Pointers
Descrição: Usar dois ponteiros para reduzir a complexidade ou simplificar a
iteração em uma estrutura de dados.

Aplicações:

Encontrar pares ou subarrays que satisfaçam condições específicas.


Resolver problemas de palíndromos.
Eliminar duplicatas ou mesclar arrays.
Exemplos:

Two Sum II - Input Array Is Sorted (LeetCode 167)


Valid Palindrome (LeetCode 125)
Container With Most Water (LeetCode 11)
2. Sliding Window
Descrição: Usar uma janela fixa ou variável para resolver problemas que envolvam
subarrays ou substrings.

Aplicações:

Encontrar o máximo, mínimo, ou soma de subarrays.


Trabalhar com substrings de comprimento fixo ou dinâmico.
Exemplos:

Maximum Sum Subarray of Size K


Longest Substring Without Repeating Characters (LeetCode 3)
Permutation in String (LeetCode 567)
3. Fast and Slow Pointers (Tortoise and Hare)
Descrição: Usar dois ponteiros que se movem em velocidades diferentes para detectar
ciclos em listas ligadas ou arrays.

Aplicações:

Detectar ciclos em listas ligadas.


Encontrar o ponto de interseção em problemas de ciclo.
Exemplos:

Linked List Cycle (LeetCode 141)


Find the Duplicate Number (LeetCode 287)
Happy Number (LeetCode 202)
4. Merge Intervals
Descrição: Resolver problemas relacionados à união ou manipulação de intervalos
ordenados.

Aplicações:

Combinar intervalos que se sobrepõem.


Inserir novos intervalos em uma lista.
Exemplos:

Merge Intervals (LeetCode 56)


Insert Interval (LeetCode 57)
Meeting Rooms II (LeetCode 253)
5. Cyclic Sort
Descrição: Usado para resolver problemas em arrays contendo números de um intervalo
fixo, normalmente sem usar espaço extra.

Aplicações:

Encontrar duplicatas, números desaparecidos ou o menor número positivo.


Exemplos:

Find All Numbers Disappeared in an Array (LeetCode 448)


Find the Duplicate Number (LeetCode 287)
Missing Number (LeetCode 268)
6. In-place Reversal of a Linked List
Descrição: Reverter sublistas ou toda uma lista ligada sem usar espaço extra.

Aplicações:

Reversão de listas ligadas.


Encontrar palíndromos em listas ligadas.
Exemplos:

Reverse Linked List (LeetCode 206)


Reverse Nodes in k-Group (LeetCode 25)
Palindrome Linked List (LeetCode 234)
7. Tree Traversal
Descrição: Percorrer árvores binárias em diferentes ordens (pré-ordem, in-ordem,
pós-ordem, BFS, DFS).

Aplicações:

Resolução de problemas de árvores.


Encontrar a soma de caminhos, profundidade máxima, etc.
Exemplos:

Binary Tree Level Order Traversal (LeetCode 102)


Maximum Depth of Binary Tree (LeetCode 104)
Path Sum (LeetCode 112)
8. BFS/DFS
Descrição: Usar buscas em largura (BFS) ou profundidade (DFS) para percorrer
grafos, árvores ou grids.

Aplicações:

Explorar grafos e grids.


Resolver problemas de conectividade.
Exemplos:

Word Ladder (LeetCode 127)


Number of Islands (LeetCode 200)
Clone Graph (LeetCode 133)
9. Backtracking
Descrição: Explorar todas as possibilidades e retroceder quando necessário.

Aplicações:
Resolver problemas de permutação e combinação.
Problemas de tabuleiro (e.g., Sudoku, N-Queens).
Exemplos:

Permutations (LeetCode 46)


Subsets (LeetCode 78)
N-Queens (LeetCode 51)
10. Dynamic Programming
Descrição: Resolver problemas quebrando-os em subproblemas menores e memorizando os
resultados.

Aplicações:

Problemas de otimização.
Resolver problemas de subsequências e caminhos mínimos.
Exemplos:

Longest Increasing Subsequence (LeetCode 300)


House Robber (LeetCode 198)
Coin Change (LeetCode 322)
11. Greedy
Descrição: Fazer escolhas locais que parecem ser ótimas no momento.

Aplicações:

Minimizar ou maximizar um valor.


Seleção de intervalos.
Exemplos:

Jump Game (LeetCode 55)


Gas Station (LeetCode 134)
Partition Labels (LeetCode 763)
12. Bit Manipulation
Descrição: Usar operações bit a bit para resolver problemas relacionados a números
binários.

Aplicações:

Encontrar o único número que aparece uma vez.


Contar bits.
Exemplos:

Single Number (LeetCode 136)


Number of 1 Bits (LeetCode 191)
Counting Bits (LeetCode 338)

Você também pode gostar