Pequeña duda

NelglakFG

Buenas,

Tengo esto:

spoiler

Y mi pregunta es ¿dónde/como puedo guardar los resultados mientras recorro el array y solo recorriéndolo 1 vez para que sea más óptimo??

Por cierto algún sitio donde pueda hacer/mirar ejercicios de este estilo?
Quiero mejorar en todos los aspectos que pueda para prepararme para el curso que viene y me gustaría entender mejor estructura de datos y creación de algoritmos aunque sea a nivel basico-medio

Un saludo!

GaaRa90

para empezar la manera mas sencilla seria antes del for, creas un hashmap, y al entren en el else, añades al hashmap como clave el numero (aux) y valor, veces, despues tendras un hashmap con claves de los numeros que habia y valores las veces repetidas.

1
Lafayette

En otro array?

1 respuesta
GaaRa90

#3 no, en otro array solo podras amacenar un dato (o valor o numero de repeticiones), pero no sabes a que dato hace referencia, ademas tendria que ser bidimensional
[1][2]...
[5][2]..
o crearte un objeto que dentro tenga como atributos valorNumerico y repeticiones.
ademas de que tendrias que crear el array con el tamaño de la lista de numero en el caso de que no se repitiera ninguno, menos eficiente.
cuando tienes que almacenar una cantidad de datos que no sabes la cantidad exacta array no es tu primera opcion.

PD: array != vector. porcierto

1
desu

Si quieres que la gente te pueda ayudar bien, pon siempre el enunciado o explica detalladamente lo que quieres hacer. Porque no se entiende bien lo que dices... Nos lo imaginamos... Pero vamos, el código no hace lo que estas preguntando y es confuso.

Imaginamos que lo que quieres es sacar un contador de cuantas veces se repiten los números. En tu ejemplo el resultado seria:

{
    7: 1,
    1: 5,
    9: 2,
    6: 1,
    2: 2,
    3: 2,
}

Tienes 3 maneras de resolverlo, dependiendo del enunciado.

array estatico
map/diccionario
coleccion de array

En general si vas a programar te recomiendo que primero empieces escribiendo la funcion y el resultado, aunque sea un print por pantalla de lo que quieres obtener. Asi puedes completar la funcion y comprobar si esta bien. Ponte unos cuantos ejemplos a mano...

1 1 respuesta
NelglakFG

#5 Muchas gracias, basicamente no hay enunciado es un ejercicio que me he impuesto yo. Teniendo esto {1, 2, 4, 1, 2, 3, 5, 1, 3, 9, 2, 1, 1} (O cualquier otro array) tengo que sacar cuanto se repite cada número recorriendo el array una sola vez y guardar el resultado en algun sitio y no sacarlo asi tan cutre con el println.

Básicamente mi modo no es el más óptimo y quería entender/razonar como hacerlo más óptimo.

1 respuesta
desu

#6 Puedes buscar ejercicios en la categoría de facil en hackerrank. Diria que son los mas simples de este estilo para aprender.

La intuición del coste es pensando en cuantas veces tienes que recorrer el array... Si puedes recorrer en 1 pasada siempre sera mejor que en 2.

Este video parece que esta bien, si entiendes que cuantos mas bucles anidados y mayor sea el tama;o de las listas mas tardara pues ya esta... tampoco te ralles. primero trata de resolver el problema que funcione bien, luego mira de hacerlo mas optimo si puedes.

Usuarios habituales

  • desu
  • NelglakFG
  • GaaRa90
  • Lafayette