¡Pregunta de entrevista en JavaScript!
HTML-код
- Опубликовано: 13 сен 2024
- 🔥 ¡Desafío de programación en JavaScript!
Esta pregunta de entrevista es un clásico, ya que deberás demostrar una mínima lógica de programación y saber recorrer bucles.
Se trata de encontrar la suma más grande entre dos números adyacentes en un array de números enteros desordenados.
En este código, utilizo un bucle for para recorrer el array y calcular la suma de cada par adyacente de números. Luego, actualizo la variable maxSum con el valor máximo obtenido en cada iteración.
Usamos el infinito negativo para asegurarnos de que la variable maxSum siempre tenga un valor inicial menor que cualquier suma posible.
Este desafío te permite practicar tus habilidades en JavaScript y poner a prueba tu lógica.
¿Te animas a intentarlo tú también? ¡Déjame saber en los comentarios cómo lo resolviste!
Si te gusta este contenido, me ayudas mucho si lo compartes y dejas tu ❤️.
Que solución más Senior, se nota la confianza y seguridad de una persona que tiene más de 15 años de exp
jajajajajajaja
Jajajaja
Jajajajajaja
No entiendo por qué se rien esos de arriba
@@golgiapparatus149 que su comentario es una pavada, da risa. La solución no es Senior, no te hace falta experiencia, es lo que escribís en un examen de programación
Lo hermoso de la programación. Cada que logro resolver esos pequeños ejercicios de lógica, se siente una satisfacción unica 😍
Savee
Por favor nunca resuelvas los ejercicios de lógica así. O al menos que no sea tú respuesta final
igual, apenas lo estoy retomando, y los bucles for a pesar de ya entender como funcionan, a veces me confundo mucho y mas cuando esta un bucle for anidado, y estos dias he estado resolviendo ejercicios que le pido a chat gpt, ignoro los mas faciles y me voy con los que siento que me ponen a pensar, y cada que resuelvo uno me siento bien, y cuando fallo en otro siento que no sirvo para esto jajja
Te entiendo, yo me confundo más cuando utilizo un do while a veces no me sale lo que pido y terminó con los efectos contrarios a los que quiero
En python, de forma recursiva:
def max_adj_sum(nums: list[int]):
match nums:
case [n1, n2, *rest]:
return max(n1 + n2, max_adj_sum([n2, *rest]))
case _:
return 0
🤯
Si, siempre preguntan esas boludeces pero nunca son problemas de la vida real
Yo lo veo bastante utilizable este ejercicio
Es de lógica
Es para desarrollar lógica matemática y de programación. Y está muy bien 👌🏻. La base es escencial
De acuerdo, jamás verás algo ni de cerca parecido desarrollando software.
Esto es como ir a las pruebas para entrar al ejercito y le digas al superior que en mitad de una guerra nadie se va a tener que poner a hacer 100 flexiones...
cuando fui estudiante en los 5 lugares donde trabaje, jamas me hicieron tales preguntas en una entrevista, simplemente me traian errores reales en algun codigo y decian que los resuelva...
Olv. Podrías dar un ejemplo de como eran? 👀
Requisitos: no uses if
Solución: usa la función de una librería que internamente usa el if, pero que tú no lo ves porque solo usas la función, y su funcionamiento es transparente para el usuario
recursividad de una funcion seria
But existen funciones con return qué condicionan la salida xd
Define:
max (a,b)
return (a+b+|a-b|)/2
Okey , si entendi bien el -Infinity es para asegurarse de tener el valor mas pequeño posible teniendo en cuenta los negativos , por que si iniciamos el maxSum en 0 no estaran cobtenolados los negativo s
Yo me siento muy jr sin su primer empleo, pero lo resolvi de otra manera más básica:
El array original lo mapeo a otro en el que a cada elemento (número) del array le sumo el valor del índice siguiente (chequeo que esta suma no de "NaN"). Luego, teniendo el nuevo array con los valores sumados, simplemente aplico un "Math.max" al spread del nuevo array y obtengo el resultado.
Me puso contento poder resolverlo, pero no creo que hubiera podido hacerlo de la manera que se muestra en el video.
Gracias por el aporte, Midu.
Esa solución es buenisima y bastante sencilla
yo creo que esta bastante bien pero al hacer map crear un nuevo array, entonces en terminos de computacion no es tan optimo
Imagine tu código Julian y en comparación con el midu la complejidad asintótica es exactamente la misma, usaste probablemente map.reduce(math.max(a, b))
Eso seria O(n) + (O(n) * O(n)) = O(n^2)
El de midu fue
Un for enlistado y dentro la función reduce
Seria O(n) * O(n) = O(n^2)
En pocas palabras las dos funciones llevarían exactamente el mismo tiempo de ejecución, lo que quiere decir que un codigo no sea mejor que el otro puesto que tienen la misma complejidad asintótica
@@Enzo_ChacinDonde ves el reduce en el video? Es un recorrido al array osea O(n). Adentro del bucle hay accesos al array O(1) y un max entre dos numeros que tmbn es O(1).
Mi solucion en python aplicando list comprehesion de forma sencilla de leer
def max_adjacent_sum(numbers: list[int]) -> int:
max_sum = max(numbers[i] + numbers[i+1] for i in range(len(numbers)-1))
return max_sum
Saludos
Y para que el retiren si directamente podrías usar la línea, de todos modos solo devuelve un número xd
Yo lo hubiese hecho, ya que vengo de otros lenguajes sin Infinity, asignando maxSum = array[0] + array[1] y empezar a iterar desde el segundo elemento, y eliminas una iteración.
si el arreglo sólo tiene dos elementos, se desborda y rompe el codigo, es mejor estandarizar en cualquier caso
@@MathPay no, ya que i = 2, no haría ninguna iteración del for, ya que 2 < 2 sería false
@@luisgmzz_ Pero i=0 a inicio del ciclo así que haría dos iteraciones igualmente, no?
@@marcosfrias28 nono claro, la idea sería poner i= 1 en el ciclo jajaja
Eso mismo estaba pensando yo, se va fuera del array en la última iteración. Se que en otros lenguajes eso me va a petar en runtime, pero JavaScript es tan impredecible que a saber.
No entendí, pero genial❤
Sí conoces los fundamentos de la programación es fácil entenderle, aunque se puede complicar un poco si no conoces la sintaxis del lenguaje de programación.
Te esta pidiendo la suma mas grande que salga de la suma de dos números que esten consecutivos de todos ésos números.
Cómo hago para decirle que nesesito googlear adyacente al entrevistador?????
Espere que abro el chatgpt 😂
lo primero que hice!! xd
Adyacente es un termino muy utilizado en matemáticas, si tienes mínimo un terciario o a lo sumo un año de una carrera afín seguro entiendes.(matemáticas es algo que se suelen saltar los autodidactas y por eso no entienden estos términos.)
En verdad he hecho aplicaciones, autentificaciones de usuario, tienda virtual, bases de datos, usos de chatgpt, descargas, manejo de archivos, mensajes de correo, manejos de dinero, de todo un poco... Backend, frontend y nunca he necesitado saber responder algo como esto, pero aún así... Si me hubieran hecho la pregunta, no lo paso 😢, por esta razón es que a pesar de haber hecho tanta cosa aun no me animo a buscar trabajo😢
Normalmente se hace cuando se trata de seguridad o crear métodos de encriptacion (sha256 por ejemplo) pero son cosas algo complejas y normalmente la idea se la dan a personas como matemáticos y doctores en ciencias de la computación (computer science).
Pero si buscas trabajo aprenderás también a la hora de pasar test técnicos. Al contrario, deberías buscar trabajo. Tomalo como parte del aprendizaje y quien sabe, igual te sorprenden y te contratan.
Se nota la confianza y la experiencia por como plantea el ejercicio.
Algún/algunos libros que recomienden para aprender a programar de 0 a expert?
Saludos.
El unico problema que veo es que en el for en cada iteración se está creando una variable, lo mejor es declararla por fuera del for y como let.
En el ayudaria hacerlo de esa forma?
@@json-manu ayuda que en memoria no se crearía y destruiría la variable que está en el for en cada ciclo
let resultado=-infinity
array.reduce((acc,valor,i)=>{
let max=Math.max(resultado,valor+array[i+1])
resultado= isNaN(max)?resultado:max
return resultado
})
El reduce es muy lento, por lo menos para este ejemplo y la mayoría
Esta bien, pero la solución es díficil de leer.
Elegante, muy elegante!!
de dónde sale resultado?
@@fabriperoconalgomasytodojunto del enunciado, vale -infinity, tambén dejé otra solución usando recursión por si interesa
Yo declararía el valor maximo como la primera suma, si hay otra mayor que se cambio a través del if o del math.max
Hasta 3 días enteros hendiéndome practicando resolver esos ejercicios
cierro la pagina y voy por la siguiente entrevista
Varios de los comentarios mencionan ordenar primero, pero si hacen esto, perderan la condición de que los dos números deben ser adyacentes.
Por ej, para este array [6,4,7,1] la solución seria 4 y 7 = 11, y no los dos mayores absolutos.
Me pone triste no saber como resolver esto😢
X2 pero bn tengo 14 aun tengo tiempo de mejorar mi lógica, afortunadamente
Tienes que entrenar tu logica de programación. Estudiar sobre algoritmos ayuda mucho
@@alejandrorios6999 Muchas gracias, lo haré. Tienes alguna recomendacion de algun canal o video?
@@jolujs con gusto bro. Fernando Herrera tiene un curso en Udemy llamado programación para principiantes. Ese te puede servir o sino busca ahi algun otro o en RUclips que de seguro deben haber varios
@@alejandrorios6999 Haré ese de fernando herrera, muchas gracias Alejandro.
Con un reduce queda bastante más sencillo en mi opinión
He tardado menos de 5 min, llevo poco tiempo aprendiendo, estoy contento
Ordeno el arreglo de manera descendente , tomo los dos valores del arreglo y luego los sumo
Jajajaja eso hice exactamente yo xD, creo que al inicio del video hubiera sido bueno que pusiera restricciones si no podiamos hacer eso.
Vine a buscar quien comentaba esto jaja yo lo pense asi de principio
No funciona así, te pide las suma mayor de dos números consecutivos, no de los números más grandes. Si tomas como ejemplo el siguiente array:
20, 5, 7, 6 , 22
Entonces la suma mayor sería 28. Si ordenas los valores de forma descendente:
22, 20, 7, 6, 5 y sumas los dos primeros valores 22 y 20 que da 42, el resultado estaría incorrecto.
Así con javascript una sola linea te sale, saludos
returnt array.sort()[array.length-1] + array.sort()[array.length-2];
exacto, no se necesita tanto: var addmax = a => {a.sort((a,b)=>b-a);return a[0]+a[1]};
Creo que cuando se refiere a dos número adyacentes se refiere a adyacentes dentro del array desordenado. Con tu solución no se podría garantizar que los dos esten al lado del otro 🤔
Lo principal es lo del comentario de arriba, al ordenarlos perdes la info de cuales son adyacentes. Igual en caso de que funcionara, la time complexity de esta forma seria peor. Ordenar el arreglo es O(nlogn) mientras que la ventana deslizante del video es O(n). Por ultimo, re feo que ordenes dos veces jajaj, guardate el array ordenado y hace dos accesos.
Tambien el maxSum puede ser: array[0] * array[1] que serian los primeros dos valores del array, luego el for se encarga de recorrer todo el array y verificar si la suma de otros dos numeros adyacentes es mayor al de la posicion 0 y 1 del array
Pero el lenght -1 es la última posicion del array, no habrá desbordamiento? Ya que suma posActual + posSiguiente
Buscaba alguien más que se diera cuenta, ese for necesita un lenght - 2
No sería mejor inicializar maxSum con la suma del primer par de elementos del array y checkear que como mínimo la longitud del array sea 2?
Ahí me entra la duda de cómo se define ese -Infinity. Grande midu!
El tema es como haces si viene con 0 o 1 elemento ?
@@maximogismondi pero si es cero, entonces no existe el array. Si es uno, salta a la vista que con uno no nos basta tampoco
@@santiagowu5365 te prometo que existen los arrays vacios... habria que contempñar esos casos
const array = [2, 4, 1, 5, 6, 3, 18]
const maxAdjacent = () => {
let sum = -Infinity
for (let i = 1; i < array.length; i++) {
let result = array[i] + array[i + 1]
sum < result ? sum = result : sum
}
return sum
}
console.log(maxAdjacent(array))
Yo lo haría con un hashMap, guardaría el valor de la primera suma del elemento actual y el siguiente, y solo se actualizaría si alguna suma es mayor a ese resultado, devolvería el valor del hashMap al terminar todas las operaciones
y qué te aporta el hashmap en este caso?
Yo volvería a leer las bases
@@jphvnet bueno :(
Ordenas el arreglo y luego sumas los dos elementos, creo q sería más sencillo sin necesidad del for
Nope, deben ser números consecutivos, así como viene el array desde un inicio, al ordenar pierdes el orden inicial
@@amaury_permer entonces seria mas facil, recorres el array de 2 en dos sumando y con cada suma metes el resultado en una variable y la comparas con la siguiente suma, si la siguiente suma es mayor entonces lo guardas en la variable, al final imprimes la variable y listo.
a, acabo de escribir lo mismo de el video xd
@@programadoremocional sip, así es xd
@@programadoremocional ahora haz secuencia de números consecutivos [4,6,2,3,4,1,8,9] = 3 más larga xd
No sería hasta length - 2? Para que sumes el penultimo con el ultimo y acabar el bucle
En Python usando For:
Lista1=[2, 4, 1, 5, 6, 3]
a=0
b=len(Lista1)-1
Lista2=[]
for x in Lista1:
suma=Lista1[a]+Lista1[a+1]
Lista2.append(suma)
a+=1
if a == b:
break
Lista2.sort()
c=len(Lista2)-1
print(f"La suma adyacente mas grande es: {Lista2[c]}")
Usando While:
Lista1=[2, 4, 1, 5, 6, 3]
a=0
b=len(Lista1)-1
Lista2=[]
while a < b:
suma=Lista1[a]+Lista1[a+1]
Lista2.append(suma)
a+=1
Lista2.sort()
c=len(Lista2)-1
print(f"La suma adyacente mas grande es: {Lista2[c]}")
Sin el If:
Lista1=[2, 4, 1, 5, 6, 3]
a=0
b=len(Lista1)-1
Lista2=[ ]
for x in range(b):
suma=Lista1[a]+Lista1[a+1]
Lista2.append(suma)
a+=1
Lista2.sort()
print("La suma adyacente mas grande es: ", Lista2[len(Lista2)-1])
En lugar de inicializar en -infinito es mejor inicializar con la suma de los elementos en posición 0 y 1 del arreglo ya que están garantizados y comenzar a recorrer tomando elementos en la posición 1 y 2 del arreglo (si existieran)
No es mas facil ordenarlos de mayor a menor y tomar los dos primeros?
puedes usar un reduce directamente en el array en el cual vas sumando el valor actual y el siguiente, lo comparas con el acumulador y devuelves el mayor de los dos como nuevo acumulador y ya esta
el truco es hacer con logica, usando lo basico sin tener que estar usando metodos que te haqcen todo
@@secundariab.2741 el reduce no te hace todo. De hecho el reduce es un método mucho más complejo que un simple for que es lo que hizo midudev..eso un junior lo puede hacer
@@secundariab.2741 la respuesta que para ti dio midudev que es la respuesta lógica te deja como un junior a lo mucho un semi senior. Usar un reduce te da alas para que al menos aspires al senior 😉
@@secundariab.2741 reduce no te hace todo. Ni sabrás que es reduce junior
Yo lo que haría es recorrer el array e ir agregando en otro array que solo puede tener 2 números, los valores que voy encontrando. De esta manera siempre voy a saber cuáles son los números mas grandes. Al final los sumo y listo.
Sirve pero es un paso innecesario para lo que pide como resultado
Para los que dicen que se debe ordenar el arreglo, vuelvan a leer el problema.
Dice la suma más grande ente 2 números adyacentes, no la suma de los 2 números mas grandes.
Creo una lista temporal y hago Ordenamiento por burbuja 2 veces y luego sumo los dos últimos números de la lista. Utilizar un for estás perdiendo muchísima eficiencia
Tuve que verlo como 10 veces para entender toda la lógica
ASi es... la solucion fue tal como la imagine.. Jajaja.. es broma. Gracias crack, genial aprender contigo.
Pensé hacerlo de la siguiente forma: 1ro. Recorro el array con un for, y voy creando un nuevo array con la suma de la interacción actual con la siguiente (obvio, se recorre hasta el penúltimo elemento). 2do, el nuevo array lo ordeno de mayor a menor con .sort(a,b=>b-a) 3ro retorno el primer elemento del array
function sumaMayor(array) {
let arraySuma = [ ];
for (let i = 0; i < array.length - 1; i++) {
arraySuma.push(array[i] + array[i + 1]);
}
arraySuma.sort((a, b) => b - a);
return arraySuma[0];
}
console.log(sumaMayor([2, 4, 1, 5, 6, 3])); // 11
.sort((a, b) => a - b).slice(array.length - 2, array.length).reduce((a, b) => a + b)
Suspendido, por no entender la prueba.
Para que sirve el infinity
Recorrer El array hasta El penuntilmo Valor del array, si la posicion actual tiene diferencia de 1 o -1 con la posicion consecutiva, sumar y guardar y si vuelve a entrar al if de 1 o -1 sumar y comparar con el Valor actual, y guardar El mayor
No necesitas usar -Infinity.
Puedes asignar maxsum a [0]+[1] antes de iterar y ya.
Yo lo resolvi mentalmente haciendo un recorrido del array y sumando la posicion actual con su siguiente y almacenar todas las sumas en otro array distinto para luego solo escoger el maximo valor de dicho array y fin. Aunque esta solucion esta muy interesantr y compleja
Tu solución ocuparía mucha ram, además en todo caso las sumas debes irlas metiendo a una lista enlazada, ya que en un array puedes llegar a colapsar la ram
Ordenamos el array con merge sort de mayor a menor y sumamos los dos dos primeros
Yo solucionaba estas cosas tomando los 2 maximos y sumandolos tipo , usaba un vector provicional
Programacion ats estaría orgulloso de ti 😊
No falta el personaje
F
Aprendiendo Programación antes de terminar mi secundaria😃
F
array.sort().reverse().slice(0,2).reduce((a,b...))
Y no se podia ordenar en forma desendente y suma la posicion 0 y 1. Que serian las mas grandes. Como la complican.
A mí una vez me pusieron uno similar y sin querer lo ordené porque rue lo primero que se me vino a la mente jajajaj 😢 desde ahí aprendí a pensar dos veces antes de implementar
Se vale hacer un sort de menor a mayor y luego solo sumar los ultimos dos valores del array ordenado? o es muy tramposo?
Pues yo lo resolví guardando todas las sumas en un Array y devolviendo el Math.max de ese array 😂
En Scala, que es más funcional, quedaría la siguiente solución tan bonita:
def maxAdjacentSum(array: Array[Int]) : Int = {
array.sliding(2, 1).map(_.sum).max
}
Ordenas el Array de mayor a menor y sumas los elementos con índice 0 y 1 ó también ordenando el Array de menor a mayor y sumas los elementos con índice Array.length-1 y Array.length-2
Eres un crack, pero sinceramente este problema es demasiado sencillo. A mi lo que me cuesta es el css, me tiene loco.
Usando la función reduce(...)
const MaxAdjacent = (nums) => nums.slice(1).reduce(Max,min,i)=>Match.max(max,min+nums[i]),}
No se debería tener en cuenta la complejidad? Con divide y venceras
Se puede usar recursividad para resolverlo.
Qué tema y fuentes usas?
Lo primero que se me ocurrio fue lo siguiente:
const maxAdjacentSum = (arr) => {
return Math.max(...arr.map((e, index, arr) => {
let numero = e
let numeroConsecutivo = arr[index + 1]
let suma = numero + numeroConsecutivo
// Aqui es mejor -Infinity en lugar de 0, para tomar en cuenta numeros negativos, pero bueno, no lo habia pensado asi que lo dejo como me salio a la primera jaja
let sumaMasGrande = 0
if (suma > sumaMasGrande) {
sumaMasGrande = suma
}
return sumaMasGrande
}))
}
Luego, simplemente por diversión, lo hice de la siguiente forma:
const maxAdjacentSum = (arr) => {
return Math.max(...arr.map((e, i, arr) => {
let numero = e
let numeroSiguiente =
typeof ( arr[ i + 1 ] ) == "number" ?
arr[ i + 1 ] :
0
return numero + numeroSiguiente
}))
}
// En esta segunda función, tuve que usar el typeof porque llega un momento en el que se intenta sumar el último elemento del array con el siguiente (que no existe) por lo que retorna un "NaN" , y hace imposible el uso del Math.max() (Ya que solo puede recibir números como argumento). Entonces, cuando eso suceda, simplemente cambio ese arr[ i + 1 ] por un 0. Y pipí cucú
El unico "problema" que se me ocurre (hasta ahora) es que, si el array proporcionado tiene demasiados elementos, el Math.max() podría llegar a fallar. Por lo que debería pensar una solución con arr.reduce() . Pero me niego momentaneamente
Ojalá así fueran las entrevistas reales de faciles
Entiendo a medias, hay varias cosas de ahí que no había visto pero más menos me hago una idea de lo que son, por ejemplo cont { length} = array
Pregunta, voy a empezar mi práctica, algo así debería saberlo? No soy ni junior pero este tipo de cosas me desaniman mucho xd
function maxAdjacentSum(array) {
if (array.length < 2) {
return null; // o cualquier otro valor apropiado si el array no contiene suficientes elementos
}
return array.slice(1).reduce((maxSum, current, index) =>
Math.max(maxSum, current + array[index]), -Infinity);
}
No lo e probado, pero si la lista está desordenada y solo suma el número de i con el contiguo y i => 0 es igual a 200 y i=>20 es igual a 50 siendo los dos números mayores, este código no podría ordenarlo o por lo menos como yo lo veo
Corrección : son dos números adyacentes, entonces si esta bien
Para hacerlo con una lista de números desordenados tendría que usar algún método de ordenamiento y en una array ordenado hacer ese método
Una posible solución en swift sería:
func midudev(_ lista: [Int]) -> Int{
if(lista.isEmpty){
return 0
}
else if(lista.count == 1){
return lista[0]
}
else if(lista.count == 2){
return lista[0] + lista[1]
}
else{
let first = lista[0]
let second = lista[1]
let suma = first + second
let rest = Array(lista.dropFirst())
let max = midudev(rest)
if(max > suma){
return max
}
else{
return suma
}
}
}
Demasiados Ifs D:
Se debería poder solamente con el for, en cualquier lenguaje...
Es igual, un for que recorre todo, desde la segunda hasta la ultima posicion, sumando el actual y el anterior...
Ordenad mayor a menor y devuelves el mas alto...
No ocupas if 👀
No se escribirlo en codigo aun, pero mi logica me dice, ordenar la lista de menos a mayor, invertirla, sumar los primeros 2 valores y devolver el resultado. Estoy mal???
Puedo ser organizar los elementos del array de menor a mayor y seleccionar los dos últimos y sumarlos ?
Eso preguntsn en entrevistas a los programadores?
no es mas facil hacer un math.max, guardar en mayor en una variable, luego quitarlo del array (pop) y hacer otro math.max?
No sería posible porque podrían ser dos números no adyacentes , ej : [9,1,4,2,3,8] , sacarlas el 9,8 que no son adyacentes , siendo la suma adyacente más grande 8,3
Yo haría un algoritmo de select ya que la suma más grande siempre será la suma del más grande con el segundo más grande.
Yo soy un atarantado de hacer cosas en one line, casi que te aseguro que te lo saco a punta de funciones de los array xd
Literalmente ocupo los principios del burblesort para la solución un crack
No puedo ordenar la lista y devolver la suma de los 2 mas grandes?
Cual es la utilidad real de estos ejercicios? Como se aplican? Pregunta seria
Ojalá la vida fuera tan simple.
Además creo que el método empreado no es nada eficiente.
La suma puede ser negativa con lo que inicializar a -Infinity no vale. Y hay que comparar valores absolutos.
Mierda loco , alfinal mi profesor de Java tenia razón , te ponen estas preguntas en la entrevista jajaja
No sería más fácil ordenar el array de menor a mayor y sumar las últimas dos casillas del array???. El problema propuesto no indica que no se pueda ordenar.
Lo malo de tener un conocimiento grande es que aveces no te puedes dar cuenta de lo que piden que en vez de hacer algo tan simple para el objetivo solicitado, te puedes llegar a complicar la vida creyendo que la solución era hacer una funcion que trabaje con cualquier array y no solo con el que te daban.
Esta sería una posible solución en Kotlin:
fun main() {
val numbers = listOf(2, 4, 1, 5, 6, 3)
val result = maxAdjacentSum(numbers)
println("result = $result")
}
fun maxAdjacentSum(numbers: List): Int {
return numbers.zipWithNext { current, next ->
current + next
}.max()
}
La solución esta bien, recorres todo el arreglo siempre, ósea la complejidad siempre seria n, yendo un poco mas lejos y siendo un friki la respuesta podría ser n/2, si recorres el array hasta la mitad y dentro del mismo for que va hasta la mitad lo recorres de atrás hacia delante hasta la mitad, ósea vas a recorrer el array de nuevo n/2 veces no n, si alguien quiere el código se lo paso
¿Cómo puedo tener su cursor en el texto como él? El que "parpadea", gracias!
Empeze a meterme en Laa programación hace muy poco tiempo. Y me cruce este video y no entendí absolutamemte nada jaja. Por qe te preguntarían esto en una entrevista y para qe serviría un código así? Qe función cumple. ?
const [biggest,secondbigest] = array.sort().reverse()
return biggest+ secondbiggest
En el momento que haces un sort, pierdes la condición de que sean adyacentes. Eso altera tanto el resultado como las condiciones del enunciado
No puede ser ordenándolos primero? const maxAdjacentSum = (arr) => {
arr.sort((a,b) => a-b)
return arr[arr.length-1] + arr[arr.length-2]
}
Hola soy nuevo sub, podrás hacer un vídeo de cómo hacer una campana para notificaciones??
Gracias me rompiste 3 neuronas
Jsjsjs estaba pensando en kotlin sin querer y ya estaba simplificando el if 😅
HOLA UNA PREGUNTA COMO LE PUEDO HACER PARA PENSAR ASI??
Acá en Perú te piden de 5 a 10 años de experiencia para acceder a la entrevista... Supongo que la culpa es de RRHH
No siempre, vivo en Perú, no termine la carrera y he tenido muchas entrevistas, antes de mi primer trabajo y durante mis primeros trabajos seguía teniendo ofertas en LinkedIn
Lo que si es verdad es que la mayoría te rechazan... Pero que no te dan la entrevista es falso 😅
@@TheJaviercrafter Bueno, sí es falso lo que dije 👀👀, pero a lo que me refiero es que piden demasiadas habilidades y realmente años de experiencia para conseguir un trabajo, y si bien sí te dan la entrevista, mayormente te rechazan; y supongo que es por no cumplir la infinidad de requisitos... :(
En mi solucion inicializaria maxSum con la suma de los dos primeros valores del array, y el for lo comenzaria en i=1
Ordeno el arreglo de forma ascendente y sumo los últimos dos dígitos, wenos días
Dice elementos ADYACENTES, si los ordenas ya no lo serían
Cuando dijo, que no se podia usar if, inmediatamente pense en operador ternario xd 😅
Which data structure is used in this tutorial?
Ese algoritmo tiene complejidad temporal O(n), dado que existen algoritmos de ordenación de menor complejidad temporal se podría ordenar el array y sumar los dos últimos directamente (o hacer una copia del array en cuestión y liberar posteriormente la memoria)
La condicion es la suma max entre adyacentes. No la suma maxima solamente. Al ordenar perdes la condición de adyacencia.
No existen algoritmos de menor complejidad, no podes NO ver todos los elementos y ordernarlos
Hay algoritmos mas rapido que n log n ?, Pregunta seria realmente no se.
@@vladimirreyes1938 sip, si sabes info de los datos si, por ej counting sort
@@vladimirreyes1938para este ejemplo no sabría decirte pero cosas más rápidas que logn si hay, lo más rápido que puede ser algo es O(1)