Mostrando las entradas con la etiqueta developer. Mostrar todas las entradas
Mostrando las entradas con la etiqueta developer. Mostrar todas las entradas

jueves, 19 de junio de 2025

Two Sum | ¿Dos Sumas? | LeetCode | Hasta encontrar trabajo 1

 A decir verdad no sé si exista una traducción literal para "Two Sum", pero bueno, resolvamos esto de una vez por todas con una explicación sencilla, en español y sin dar tanta vuelta a las explicaciones científicas, técnicas o intelectuales porque ya saben que a nosotros los ingenieros nos gusta andar de "pensantes" en todo momento.

Problema (original):

Given an array of integers nums and an integer target, return indices of the two numbers such that they add up to target.

You may assume that each input would have exactly one solution, and you may not use the same element twice.

You can return the answer in any order.

 Example 1:

Input: nums = [2,7,11,15], target = 9
Output: [0,1]
Explanation: Because nums[0] + nums[1] == 9, we return [0, 1].

Problema (traducido por mí):

Dado un arreglo de enteros y un entero designado, obtener las posiciones en el arreglo de los dos números que sumados deben dar como resultado el entero designado.

Es decir que si tienes un arreglo [2, 7, 11, 15] y tu designado es el 9, entonces tus números que sumados dan esa cantidad son el 2 y el 7, los cuales se encuentran en las posiciones [0] y [1] de nuestro arreglo.

Hay que dar por hecho que en todo momento el entero designado tendrá una solución implícita en el arreglo, así que no te preocupes de poner "validaciones" de ningún tipo, solo asegúrate de buscar la respuesta correcta en el menor tiempo posible.

La respuesta entonces sería [0, 1] o [1, 0], finalmente no importa el orden.

Otro ejemplo:


Sermón:

La lógica de esto no es la gran cosa, en realidad es muy sencillo solo colocar un par de ciclos y finalmente encontrarás la respuesta, el verdadero reto es que tu desarrollo sea rápido, preciso y totalmente funcional.
En programación existen 'N' caminos para llegar al mismo destino, igual que en la vida, así que haz tu mejor esfuerzo, en realidad si puedes resolver un problema de una manera, habrás aprendido algo, aunque no sea lo mejor de lo mejor, habrás llegado al resultado esperado y puedes seguir mejorando siempre.

Lógica:

1.- Recorrer todo el arreglo con un ciclo
2.- Comprobar cada número del arreglo sumado con el resto para encontrar la respuesta
3.- Validar que efectivamente encontramos la respuesta
4.- Retornar la respuesta

Programación:

1.- Coloqué un ciclo for que va desde la posición 0 (variable x) hasta la última del arreglo
2.- Dentro de ese ciclo hice otro que comenzará desde una posición adelante de nuestro primer ciclo (variable y = x + 1) y de igual manera terminará hasta la última posición del arreglo.
3.- Ahora sí, dentro del segundo ciclo comencé a validar si la suma del arreglo en la posición 'x' (ARREGLO[x]) y el arreglo en la posición 'y' (ARREGLO[y])
4.- Una vez encontrado el valor, retorno las posiciones 'x' y 'y'

¿Complejo?, no realmente, ¿óptimo?, no realmente, pero sí funcional, hay otras formas de realizar esta búsqueda más rápidamente, utilizando un estructuras de datos más veloces, pero para aprender eso primero tienes que pasar por esto, y practicar hasta mejorar tanto que tú mismo puedas criticar tu propio código.

Resultado:



¡DESCARGA FAST!

Todo el código que quieras, ¡GRATIS!, programación totalmente gratuita.
Comenta, opina, exprésate y déjame saber si quieres algo específico, si algo está mal o si no te gusta algo, para hacer que te guste

lunes, 27 de abril de 2020

Calcular día del año dada una fecha | Programa en C y C++

Esto es ayuda a la comunidad, creí que sería sencillo de programar y así lo fue, sin embargo quería expresar una buena lógica a la hora de desarrollar este programita.

Es bien sabido que los días del año son 365 normalmente, pero existe un inconveniente llamado año bisiesto, seguramente has escuchado de él al menos una vez en tu vida, y quizá tengas amigos que apenas tienen como 3 o 4 años solamente por la sencilla razón de que su cumpleaños solo se puede festejar cada 4 años aproximadamente, y digo aproximada porque el año 200 aunque no lo crean no es año bisiesto, pero esa es otra historia.

Ok, me salí del tema un poco, el año tiene 365 días y 366 si es bisiesto. Y los programadores nos festejamos el día 256 del año, es decir el 13 de Septiembre (el 12 si el año es bisiesto), para que vayan pidiendo regalo para ese día. El motivo por el que el día 256 del año nos representa es porque ese día nacieron todas las flores... Mentira, es porque es la cantidad máxima que puede expresarse en 8 bits en el sistema binario 11111111 (255 y el 0 que se representa con 8 ceros).



Bien, ya tienes motivos para que este programa te interese.

Puntos a destacar para hacer el programa:

  1. Los meses tienen 30 y 31 días, a excepción de febrero que tiene 28 días naturalmente y 29 en año bisiesto.
  2. 365 o 366 días del año que deben obtenerse sumando todos los días de cada mes que conforman el año.
  3. No importa realmente el mes en curso para considerar el conteo de los días, es decir, si te dan una fecha de mayo (05 05 2000), debes sumar todos los días de los meses anteriores y luego sumar los 5 días de mayo, de la siguiente manera: enero + febrero + marzo + abril + [días de mayo].
  4. Considerar siempre sumarle un día a febrero en caso de que sea año bisiesto para no fallar.
  5. El año bisiesto se obtiene con la siguiente condición: (si año es divisible entre 4 y no divisible entre 100) O (si año es divisible entre 400)
    Que podemos representar así:

    if((año % 4 == 0 && año % 100 != 0) || (año % 400 == 0))El símbolo "%" representa el residuo de una división entera, es decir, lo que sobra al dividir un número entre otro, así que si el residuo es cero significa que el número es divisible entre el otro número, por ejemplo 4 es divisible entre 2.
Ya, suficiente teoría, esto fue sencillo, ¿no?, ahora sí lo que todo estaban esperando, EL CÓDIGO.

¡DESCARGA FAST!

Todo el código que quieras, ¡GRATIS!, programación totalmente gratuita.
Comenta, opina, exprésate y déjame saber si quieres algo específico, si algo está mal o si no te gusta algo, para hacer que te guste.

Clic a la imagen para descargar el código en C o C++: