🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# 圆形数组中相邻元素的最小绝对差 > 原文: [https://www.geeksforgeeks.org/minimum-absolute-difference-adjacent-elements-circular-array/](https://www.geeksforgeeks.org/minimum-absolute-difference-adjacent-elements-circular-array/) 给定 n 个整数,它们形成一个圆。 找到任何相邻对的最小绝对值。 如果有许多最佳解决方案,请输出其中任何一个。 注意:它们在圈子中 例子: ``` 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. ``` 首先考虑最小值是第一和第二元素。 从第二个元素遍历到最后一个。 检查每个相邻对的差异并存储最小值。 当到达最后一个元素时,检查其与第一个元素的区别。 下面是上述方法的实现。 ## C++ ```cpp // 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 // 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 ```py # 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# ```cs // 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 // 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. ?> ``` Output: ``` Min Difference = 0 ``` **时间复杂度**:`O(n)` 本文由 [**努力者**](https://www.facebook.com/raja.vikramaditya.7) 贡献。 如果您喜欢 GeeksforGeeks 并希望做出贡献,则还可以使用 [tribution.geeksforgeeks.org](http://www.contribute.geeksforgeeks.org) 撰写文章,或将您的文章邮寄至 tribution@geeksforgeeks.org。 查看您的文章出现在 GeeksforGeeks 主页上,并帮助其他 Geeks。