-
Notifications
You must be signed in to change notification settings - Fork 0
Semanas 2 y 3 Arrays Strings Hashing y Sumas de Prefijos
Dominar problemas comunes de conteo, frecuencia, índices, normalización de strings y sumas acumuladas usando estructuras estándar de Rust.
| Problema | Patrón | Función | Tests |
|---|---|---|---|
| Two Sum | Búsqueda de complemento | two_sum |
3 |
| Valid Anagram | Conteo de frecuencias | valid_anagram |
3 |
| Contains Duplicate | Pertenencia en set | contains_duplicate |
2 |
| Isomorphic Strings | Mapeo bidireccional | is_isomorphic |
2 |
| Word Pattern | Bijección patrón-palabra | word_pattern |
2 |
| Group Anagrams | Llave canónica | group_anagrams |
2 |
| Product of Array Except Self | Prefijo/sufijo | product_except_self |
3 |
| Top K Frequent Elements | Ranking por frecuencia | top_k_frequent |
2 |
| First Unique Character | Conteo + orden original | first_unique_char |
2 |
| Longest Consecutive Sequence | Inicios de secuencia en set | longest_consecutive |
3 |
| Subarray Sum Equals K | Suma de prefijos + HashMap | subarray_sum_equals_k |
4 |
El mapa guarda valores anteriores. Si target - value ya existe, encontramos una pareja válida sin hacer una búsqueda cuadrática.
Se usa cuando la respuesta depende de cuántas veces aparece un valor o carácter.
Ejemplos:
valid_anagramtop_k_frequentgroup_anagramsfirst_unique_char
Se usa cuando dos dominios deben mantener una relación uno a uno.
Ejemplos:
is_isomorphicword_pattern
Invariante:
- Si un carácter ya tiene destino, debe volver a ver el mismo destino.
- Si un destino ya fue usado por otro origen, la relación deja de ser biyectiva.
Varias entradas distintas pueden caer en el mismo grupo si se normalizan a la misma llave.
Ejemplo:
-
"eat","tea"y"ate"se normalizan como"aet".
product_except_self usa dos pasadas:
- Una para guardar información acumulada desde la izquierda.
- Otra para combinarla con información acumulada desde la derecha.
Este patrón evita división y maneja ceros correctamente.
subarray_sum_equals_k cuenta subarreglos contiguos cuya suma es k.
Invariante:
-
prefix_sumes la suma acumulada hasta el índice actual. - Si
prefix_sum - kapareció antes, existe un subarreglo que termina en el índice actual y sumak. - El mapa guarda cuántas veces apareció cada suma de prefijos.
- Olvidar inicializar el mapa de sumas de prefijos con
{0: 1}. - Confundir subarreglo contiguo con subsecuencia.
- Asumir que
HashMapconserva orden de iteración. - Usar
HashMapcuandoHashSetsería suficiente. - No probar números negativos en problemas de sumas acumuladas.
- Validar solo un lado del mapeo y permitir que dos claves apunten al mismo valor.
cargo testResultado al cerrar el bloque:
348 passed; 0 failed
El siguiente bloque recomendado es:
- Two pointers.
- Sliding window.
- Stack.
Primeros problemas sugeridos:
- Valid Palindrome.
- 3Sum.
- Container With Most Water.
- Best Time to Buy and Sell Stock.
- Longest Substring Without Repeating Characters.