Open diemax opened 5 years ago
La solucion es O(n) por que el array esta desordenado, entonces hay que recorrer el array completamente si o si. Tiene un muy pequeno error tu algoritmo
En vez de
for (index = 0; index <= arr.length; index++) {
es
for (index = 0; index < arr.length; index++) {
Basicamente tiene que ser menor en vez de menor igual. Ahora, en vez de tener un if, yo tendria una funcion nativa como max
function greaterElement(arr) {
let greater = arr[0];
for (index = 0; index < arr.length; index++) {
greater = Math.max(arr[index], greater);
}
return greater;
}
Inclusive podrias reducirlo mas haciendo esto
array1 = [1, 2, 8, 10, 5]
Math.max(...array1)
Pero en si el algoritmo es correcto ;) Bien ahi por saber que es O(n)! Requiere bastante experiencia empezar a reconocer el orden de las funciones
Ah si, tenes razón, tiene que ser index < arr.length
Con la function Math.max
podes incluso usar apply
Un buen truco que aprendà para recordar como se diferencian call
y apply
es asociando la primer letra con el tipo de argumento, por ejemplo:
call
means comma separated arguments
apply
means array of arguments
Entonces el codigo por si no tenes soporte para hacer array spread serÃa:
Math.max.apply(null, array1);
Gracias de nuevo! 😄
Voy a ponerme a buscar una buena lista de problemas con arrays, incluido sort algorithms
Hola @noiarek !
Este es un problema super simple, aun no mire soluciones de otros, al parecer la mia es O(n) Y por lo que vi es la forma mas standard de hacerlo 😅 Que te parece? Gracias 💚