-
Notifications
You must be signed in to change notification settings - Fork 0
Patrones Rust para Entrevista
Joel Alvarez edited this page Jul 12, 2026
·
10 revisions
let mut counts = std::collections::HashMap::new();
for value in values {
*counts.entry(value).or_insert(0) += 1;
}Aplicaciones:
- Anagramas.
- Top K frecuente.
- Conteo de caracteres o números.
let mut seen = std::collections::HashMap::new();
for (index, value) in nums.into_iter().enumerate() {
let complement = target - value;
if let Some(&previous_index) = seen.get(&complement) {
return Some((previous_index, index));
}
seen.insert(value, index);
}Aplicaciones:
- Two Sum.
- Pares con target.
- Detección de relaciones valor-índice.
let values: std::collections::HashSet<i32> = nums.into_iter().collect();
for &value in &values {
if values.contains(&(value - 1)) {
continue;
}
}Aplicaciones:
- Duplicados.
- Secuencias consecutivas.
- Visitados en grafos.
let mut prefix_counts = std::collections::HashMap::from([(0, 1)]);
let mut prefix_sum = 0;
let mut matches = 0;
for value in nums {
prefix_sum += value;
let needed_prefix = prefix_sum - target;
if let Some(count) = prefix_counts.get(&needed_prefix) {
matches += count;
}
*prefix_counts.entry(prefix_sum).or_insert(0) += 1;
}Aplicaciones:
- Contar subarreglos contiguos con una suma objetivo.
- Detectar rangos con suma específica.
- Trabajar con números negativos cuando sliding window ya no aplica.
pub fn find_value(nums: Vec<i32>, target: i32) -> Option<usize> {
for (index, value) in nums.into_iter().enumerate() {
if value == target {
return Some(index);
}
}
None
}Usar Option cuando una respuesta puede no existir. Es más idiomático que devolver -1.
Los mapas no garantizan orden de iteración. Si una función regresa grupos, ordenar antes de comparar:
for group in &mut result {
group.sort();
}
result.sort();