Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Select an option

  • Save quattrococodrilo/7485add28b39d5beaba0a7b775d36ce6 to your computer and use it in GitHub Desktop.

Select an option

Save quattrococodrilo/7485add28b39d5beaba0a7b775d36ce6 to your computer and use it in GitHub Desktop.
Minimum Absolute Difference in an Array
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;
}
// 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