Soluções otimizadas em Python para problemas de algoritmos e estruturas de dados, focadas em Big-O e Live Coding
Coleção de soluções em Python para desafios de algoritmos e estruturas de dados, organizadas por padrões e acompanhadas por análises de complexidade (
| # | Problema | Padrão / Estrutura | Complexidade Tempo | Complexidade Espaço | Código |
|---|---|---|---|---|---|
| 217 | Contains Duplicate | Hash Set / Map | Acessar | ||
| 242 | Valid Anagram | Hash Map / Frequency | Acessar | ||
| 205 | Isomorphic Strings | Hash Map (Bijection) | Acessar | ||
| 2325 | Decode the Message | Hash Map (Mapping) | Acessar | ||
| 001 | Two Sum | Hash Map ( |
Acessar | ||
| 387 | First Unique Character | Hash Map (Two-Pass) | Acessar | ||
| 349 | Intersection of Two Arrays | Hash Set / Pointers | Acessar | ||
| 283 | Move Zeroes | Two Pointers (In-Place) | Acessar | ||
| 125 | Valid Palindrome | Two Pointers (Opposite) | Acessar | ||
| 344 | Reverse String | Two Pointers (In-Place Swap) | Acessar | ||
| 020 | Valid Parentheses | Stack (LIFO) | Acessar | ||
| 643 | Maximum Average Subarray I | Fixed Sliding Window | Acessar | ||
| 209 | Minimum Size Subarray Sum | Dynamic Sliding Window | Acessar | ||
| 704 | Binary Search | Binary Search | Acessar | ||
| 035 | Search Insert Position | Binary Search | Acessar |
-
Hash Map / Dictionary: Busca instantânea
$\mathcal{O}(1)$ e contagem de frequências. -
Two Pointers: Manipulação de coleções e alteração in-place com memória
$\mathcal{O}(1)$ . -
Sliding Window: Redução de sub-arrays/sub-strings de
$\mathcal{O}(N^2)$ para$\mathcal{O}(N)$ . -
Binary Search: Busca logarítmica
$\mathcal{O}(\log N)$ em listas ordenadas. - Stack: Estrutura LIFO para validação de escopos e navegação.