5-valores duplicados en un arreglo-Versión PSeInt
Versión PSeInt - Encontrar Duplicados Exactos
Algoritmo EncontrarDuplicadosExactos
// Este algoritmo encuentra números que aparecen exactamente 2 veces en un arreglo
Definir arreglo, frecuencia Como Entero[]
Definir i, numero, resultado Como Entero[]
Definir tamaño, indiceResultado Como Entero
// Ejemplo de arreglo de entrada
tamaño = 5
Dimension arreglo[tamaño]
arreglo[1] = 1
arreglo[2] = 2
arreglo[3] = 2
arreglo[4] = 3
arreglo[5] = 3
// PASO 1: Encontrar el número máximo para dimensionar el arreglo de frecuencia
Definir maximo Como Entero
maximo = 0
Para i = 1 Hasta tamaño Hacer
Si arreglo[i] > maximo Entonces
maximo = arreglo[i]
FinSi
FinPara
// Crear arreglo de frecuencia (índices representan los números)
Dimension frecuencia[maximo + 1]
// PASO 2: Contar frecuencia de cada número
Para i = 1 Hasta tamaño Hacer
numero = arreglo[i]
frecuencia[numero] = frecuencia[numero] + 1
FinPara
// PASO 3: Contar cuántos números aparecen exactamente 2 veces
Definir contadorResultados Como Entero
contadorResultados = 0
Para i = 1 Hasta maximo Hacer
Si frecuencia[i] = 2 Entonces
contadorResultados = contadorResultados + 1
FinSi
FinPara
// PASO 4: Crear arreglo de resultados
Dimension resultado[contadorResultados]
indiceResultado = 1
Para i = 1 Hasta maximo Hacer
Si frecuencia[i] = 2 Entonces
resultado[indiceResultado] = i
indiceResultado = indiceResultado + 1
FinSi
FinPara
// PASO 5: Mostrar resultados
Escribir "Números que aparecen exactamente 2 veces:"
Si contadorResultados = 0 Entonces
Escribir "No hay números duplicados exactos"
Sino
Para i = 1 Hasta contadorResultados Hacer
Escribir resultado[i]
FinPara
FinSi
FinAlgoritmoVersión más simple (sin arreglo de frecuencia):
Algoritmo EncontrarDuplicadosSimple
Definir arreglo Como Entero[]
Definir i, j, contador, tamaño Como Entero
Definir encontrado Como Logico
// Arreglo de ejemplo
tamaño = 6
Dimension arreglo[tamaño]
arreglo[1] = 1
arreglo[2] = 2
arreglo[3] = 2
arreglo[4] = 3
arreglo[5] = 3
arreglo[6] = 3
Escribir "Números que aparecen exactamente 2 veces:"
Para i = 1 Hasta tamaño Hacer
// Verificar si ya procesamos este número
encontrado = Falso
Para j = 1 Hasta i-1 Hacer
Si arreglo[j] = arreglo[i] Entonces
encontrado = Verdadero
FinSi
FinPara
Si NO encontrado Entonces
// Contar cuántas veces aparece el número
contador = 0
Para j = 1 Hasta tamaño Hacer
Si arreglo[j] = arreglo[i] Entonces
contador = contador + 1
FinSi
FinPara
// Si aparece exactamente 2 veces, mostrarlo
Si contador = 2 Entonces
Escribir arreglo[i]
FinSi
FinSi
FinPara
FinAlgoritmo¿Cómo funciona la lógica en PSeInt?
Preparación: Creamos un arreglo de frecuencia donde cada posición representa un número
Conteo: Recorremos el arreglo original y aumentamos el contador para cada número
Filtrado: Buscamos qué números tienen valor exactamente 2 en el arreglo de frecuencia
Resultado: Mostramos los números que cumplen la condición
Salida esperada para [1, 2, 2, 3, 3, 3]:
Números que aparecen exactamente 2 veces:
2 Análisis del problema: Encontrar duplicados
¡Me alegra que te guste el seudocódigo! Vamos con este nuevo ejercicio.
1. Lógica en dos pasos
Paso 1: Contar cuántas veces aparece cada número
Recorrer todo el arreglo
Llevar un registro de cuántas veces hemos visto cada número
Paso 2: Filtrar los que aparecen exactamente 2 veces
Revisar nuestro registro de conteos
Seleccionar solo los números que tengan exactamente 2 apariciones
2. Seudocódigo detallado
INICIO
LEER arreglo_numeros
// Paso 1: Contar apariciones de cada número
contador = {} // Diccionario vacío para guardar conteos
PARA CADA numero EN arreglo_numeros HACER
SI numero YA EXISTE EN contador ENTONCES
contador[numero] = contador[numero] + 1
SINO
contador[numero] = 1
FIN SI
FIN PARA
// Paso 2: Encontrar números que se repiten exactamente 2 veces
duplicados = [] // Arreglo vacío para resultados
PARA CADA numero EN contador HACER
SI contador[numero] ES IGUAL A 2 ENTONCES
AGREGAR numero A duplicados
FIN SI
FIN PARA
IMPRIMIR duplicados
FIN3. Analogía
Imagina que eres maestro y tienes una lista de estudiantes:
Lista de estudiantes: Ana, Luis, María, Luis, Pedro, Ana, Luis
Contar apariciones:
Ana: 2 veces ✓ (exactamente 2)
Luis: 3 veces ✗ (más de 2)
María: 1 vez ✗ (menos de 2)
Pedro: 1 vez ✗ (menos de 2)
Resultado: Solo Ana aparece exactamente 2 veces
4. Código JavaScript para principiantes
// Función para encontrar duplicados que aparecen exactamente 2 veces
function encontrarDuplicados(arreglo) {
// Paso 1: Contar cuántas veces aparece cada número
let contador = {};
for (let i = 0; i < arreglo.length; i++) {
let numero = arreglo[i];
// Si el número ya está en el contador, sumar 1
// Si no está, inicializarlo en 1
if (contador[numero]) {
contador[numero] += 1;
} else {
contador[numero] = 1;
}
}
// Paso 2: Encontrar números que aparecen exactamente 2 veces
let duplicados = [];
// Recorrer todas las claves (números) del contador
for (let numero in contador) {
if (contador[numero] === 2) {
duplicados.push(Number(numero)); // Convertir de texto a número
}
}
return duplicados;
}
// Pruebas con los ejemplos dados
console.log("Prueba 1: [4,3,2,7,8,3,1] =", encontrarDuplicados([4,3,2,7,8,3,1]));
console.log("Prueba 2: [1,1,2] =", encontrarDuplicados([1,1,2]));
console.log("Prueba 3: [1] =", encontrarDuplicados([1]));5. Versión más simple (sin funciones)
// Arreglo de prueba
let numeros = [4, 3, 2, 7, 8, 3, 1];
// Objeto para contar (como un diccionario)
let contador = {};
// Contar cada número
for (let i = 0; i < numeros.length; i++) {
let num = numeros[i];
if (contador[num] === undefined) {
// Primera vez que vemos este número
contador[num] = 1;
} else {
// Ya habíamos visto este número antes
contador[num] += 1;
}
}
// Buscar los que aparecen exactamente 2 veces
let resultado = [];
for (let numero in contador) {
if (contador[numero] === 2) {
resultado.push(Number(numero));
}
}
console.log("Números que aparecen exactamente 2 veces:", resultado);6. Explicación del objeto contador
El contador es un objeto que funciona como un diccionario:
Claves: los números que encontramos
Valores: cuántas veces aparece cada número
Ejemplo con [4,3,2,7,8,3,1]:
contador = {
"1": 1,
"2": 1,
"3": 2, ← Este aparece 2 veces ✓
"4": 1,
"7": 1,
"8": 1
}Resultado: [3] (solo el 3 aparece exactamente 2 veces)
¡Este enfoque es muy eficiente y fácil de entender para principiantes!
Comentarios
Publicar un comentario