Last active
May 24, 2023 00:44
-
-
Save quattrococodrilo/7485add28b39d5beaba0a7b775d36ce6 to your computer and use it in GitHub Desktop.
Minimum Absolute Difference in an Array
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| function minimumAbsoluteDifference($arr) { | |
| // Primero se ordena de esta manera | |
| // los elementos para que los elementos queden ordenados | |
| // según su proximidad. | |
| sort($arr); | |
| // $min = pow(10, 9) + 1; | |
| // Investigué en la documentación de PHP que hay una constante | |
| // para obtener el máximo valor de un entero en la plataforma | |
| // en la que se ejecuta el programa. | |
| $min = PHP_INT_MAX; | |
| // Se itera una sola vez en el array. | |
| for ($i = 0; $i < count($arr) - 1; $i++) { | |
| // Se hace la differencia entre los números que se encuentran próximos, | |
| // no hace falta formar pajeras porque ya están ordenados, | |
| // en un plano carteciano ya están ordenados según suproximidad, | |
| // de tal forma que en algún momento se hará la diferencia de | |
| // los números que se encuentren más próximos entre sí | |
| // lo que daría la diferencia mínima. | |
| $operation = abs($arr[$i] - $arr[$i + 1]); | |
| // Se compara de esta manera porque usar el operador ternario | |
| // implicaría una operación más. | |
| if ($operation < $min) { | |
| $min = $operation; | |
| } | |
| } | |
| // La complejidad computacional termina siendo de O(n log n), | |
| // porque sólo se iteró una vez, claro más el sort pero al ser una | |
| // función propia de PHP ya está optimizada. | |
| return $min; | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| // Aquí la función por si se quiere probar, | |
| // ya que en Hackerrank da error si se ejecuta con los comentarios. | |
| function minimumAbsoluteDifference($arr) { | |
| sort($arr); | |
| $min = PHP_INT_MAX; | |
| for ($i = 0; $i < count($arr) - 1; $i++) { | |
| $operation = abs($arr[$i] - $arr[$i + 1]); | |
| if ($operation < $min) { | |
| $min = $operation; | |
| } | |
| } | |
| return $min; | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment