Dados n enteros, que forman un círculo. Encuentre el valor absoluto mínimo de cualquier par adyacente. Si hay muchas soluciones óptimas, genere cualquiera de ellas.
Nota: están en círculo .
Ejemplos:
Input : arr[] = {10, 12, 13, 15, 10} Output : 0 Explanation: |10 - 10| = 0 which is the minimum possible. Input : arr[] = {10, 20, 30, 40} Output : 10 Explanation: |10 - 20| = 10 which is the minimum, 2 3 or 3 4 can be the answers also.
Considere inicialmente que el valor mínimo es del primer y segundo elemento. Recorra desde el segundo elemento hasta el último. Verifique la diferencia de cada par adyacente y almacene el valor mínimo. Cuando se alcanza el último elemento, verifique su diferencia con el primer elemento.
A continuación se muestra la implementación del enfoque anterior.
C++
// C++ program to find maximum difference // between adjacent elements in a circular array. #include <bits/stdc++.h> using namespace std; void minAdjDifference(int arr[], int n) { if (n < 2) return; // Checking normal adjacent elements int res = abs(arr[1] - arr[0]); for (int i = 2; i < n; i++) res = min(res, abs(arr[i] - arr[i - 1])); // Checking circular link res = min(res, abs(arr[n - 1] - arr[0])); cout << "Min Difference = " << res; } // driver program to check the above function int main() { int a[] = { 10, 12, 13, 15, 10 }; int n = sizeof(a) / sizeof(a[0]); minAdjDifference(a, n); return 0; }
Java
// Java program to find maximum difference // between adjacent elements in a circular // array. class GFG { static void minAdjDifference(int arr[], int n) { if (n < 2) return; // Checking normal adjacent elements int res = Math.abs(arr[1] - arr[0]); for (int i = 2; i < n; i++) res = Math.min(res, Math.abs(arr[i] - arr[i - 1])); // Checking circular link res = Math.min(res, Math.abs(arr[n - 1] - arr[0])); System.out.print("Min Difference = " + res); } // driver code public static void main(String arg[]) { int a[] = { 10, 12, 13, 15, 10 }; int n = a.length; minAdjDifference(a, n); } } // This code is contributed by Anant Agarwal // and improved by Anuj Sharma.
Python3
# Python3 program to find maximum # difference between adjacent # elements in a circular array. def minAdjDifference(arr, n): if (n < 2): return # Checking normal adjacent elements res = abs(arr[1] - arr[0]) for i in range(2, n): res = min(res, abs(arr[i] - arr[i - 1])) # Checking circular link res = min(res, abs(arr[n - 1] - arr[0])) print("Min Difference = ", res) # Driver Code a = [10, 12, 13, 15, 10] n = len(a) minAdjDifference(a, n) # This code is contributed by Anant Agarwal # and improved by Anuj Sharma.
C#
// C# program to find maximum difference // between adjacent elements in a circular array. using System; class GFG { static void minAdjDifference(int[] arr, int n) { if (n < 2) return; // Checking normal adjacent elements int res = Math.Abs(arr[1] - arr[0]); for (int i = 2; i < n; i++) res = Math.Min(res, Math.Abs(arr[i] - arr[i - 1])); // Checking circular link res = Math.Min(res, Math.Abs(arr[n - 1] - arr[0])); Console.Write("Min Difference = " + res); } // driver code public static void Main() { int[] a = { 10, 12, 13, 15, 10 }; int n = a.Length; minAdjDifference(a, n); } } // This code is contributed by Anant Agarwal // and improved by Anuj Sharma.
PHP
<?php // PHP program to find maximum // difference between adjacent // elements in a circular array. function minAdjDifference($arr, $n) { if ($n < 2) return; // Checking normal // adjacent elements $res = abs($arr[1] - $arr[0]); for ($i = 2; $i < $n; $i++) $res = min($res, abs($arr[$i] - $arr[$i - 1])); // Checking circular link $res = min($res, abs($arr[$n - 1] - $arr[0])); echo "Min Difference = ", $res; } // Driver Code $a = array(10, 12, 13, 15, 10); $n = count($a); minAdjDifference($a, $n); //This code is contributed by anuj_67 //and improved by Anuj Sharma. ?>
Javascript
<script> // Javascript program to find maximum difference // between adjacent elements in a circular array. function minAdjDifference( arr, n) { if (n < 2) return; // Checking normal adjacent elements let res = Math.abs(arr[1] - arr[0]); for (let i = 2; i < n; i++) res = Math.min(res, Math.abs(arr[i] - arr[i - 1])); // Checking circular link res = Math.min(res, Math.abs(arr[n - 1] - arr[0])); document.write("Min Difference = " + res); } // driver code let a = [ 10, 12, 13, 15, 10 ]; let n = a.length; minAdjDifference(a, n); </script>
Min Difference = 0
Complejidad de tiempo: O (N), ya que estamos usando un bucle para atravesar N veces.
Espacio auxiliar: O(1) , ya que no estamos utilizando ningún espacio adicional.
Este artículo es una contribución de luchador . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA