Dada una array arr[ ] de tamaño N, la tarea es encontrar la diferencia mínima entre los elementos máximo y mínimo de todos los subarreglos de tamaño posible de arr[ ].
Ejemplos:
Entrada: arr[] ={ 5, 14, 7, 10 } Salida: 3 Explicación: {7, 10} es el subarreglo que tiene un elemento máximo = 10 y un elemento mínimo = 7, y su diferencia = 10 – 7 = 3
Entrada: arr[] = { 2, 6, 15, 7, 6 }
Salida: 1
Explicación: {7, 6} es el subarreglo que tiene un elemento máximo = 7 y un elemento mínimo = 6, y su diferencia = 7 – 6 = 1
Enfoque : la idea simple es usar dos bucles y verificar para cada subarreglo, la diferencia mínima entre el elemento máximo y mínimo. Lleve un registro de las diferencias y devuelva la mínima diferencia posible. La complejidad del tiempo para este enfoque sería cuadrática.
Enfoque eficiente : la idea es utilizar el hecho de que podemos obtener una diferencia mínima al iterar solo sobre los subarreglos de tamaño dos .
Supongamos que tenemos dos elementos en nuestro subarreglo. Sea x la diferencia entre el elemento máximo y mínimo . Ahora, si incluimos un elemento del lado derecho o del lado izquierdo en nuestro subarreglo, el elemento máximo o el elemento mínimo podrían actualizarse. Este cambio finalmente hará que nuestra diferencia aumente x , ya que el elemento máximo o mínimo se actualiza.
Siga los pasos a continuación para implementar el enfoque anterior:
- Iterar la array y realizar un seguimiento de la diferencia mínima adyacente
- Imprime esta diferencia mínima como resultado.
A continuación se muestra la implementación del enfoque anterior:
C++
// C++ program for the above approach #include <bits/stdc++.h> using namespace std; // Function to get the min difference // between max and min element of all // possible subarrays int getMinDifference(int arr[], int n) { // To store the adjacent difference int diff; // To compare with min difference int mn = INT_MAX; for (int i = 1; i < n; i++) { // Storing adjacent difference diff = abs(arr[i] - arr[i - 1]); // Updating the min difference mn = min(diff, mn); } // Returning min difference return mn; } // Driver code int main() { int arr[] = { 2, 6, 15, 7, 6 }; int N = sizeof(arr) / sizeof(arr[0]); cout << getMinDifference(arr, N); return 0; }
Java
// Java program for the above approach import java.io.*; class GFG{ // Function to get the min difference // between max and min element of all // possible subarrays static int getMinDifference(int []arr, int n) { // To store the adjacent difference int diff = 0; // To compare with min difference int mn = Integer.MAX_VALUE; for (int i = 1; i < n; i++) { // Storing adjacent difference diff = Math.abs(arr[i] - arr[i - 1]); // Updating the min difference mn = Math.min(diff, mn); } // Returning min difference return mn; } // Driver code public static void main (String[] args) { int []arr = {2, 6, 15, 7, 6 }; int N = arr.length; System.out.println(getMinDifference(arr, N)); } } // This code is contributed by shivanisinghss2110
Python3
# Python3 program for the above approach import sys,math # Function to get the min difference # between max and min element of all # possible subarrays def getMinDifference(arr, n) : INT_MAX = sys.maxsize; # To compare with min difference mn = INT_MAX; for i in range(1, n): # Storing adjacent difference diff = abs(arr[i] - arr[i - 1]); # Updating the min difference mn = min(diff, mn); # Returning min difference return mn; # Driver code if __name__ == "__main__" : arr = [ 2, 6, 15, 7, 6 ]; N = len(arr); print(getMinDifference(arr, N)); # This code is contributed by AnkThon
C#
// C# program for the above approach using System; using System.Collections.Generic; class GFG{ // Function to get the min difference // between max and min element of all // possible subarrays static int getMinDifference(int []arr, int n) { // To store the adjacent difference int diff = 0; // To compare with min difference int mn = Int32.MaxValue; for (int i = 1; i < n; i++) { // Storing adjacent difference diff = Math.Abs(arr[i] - arr[i - 1]); // Updating the min difference mn = Math.Min(diff, mn); } // Returning min difference return mn; } // Driver code public static void Main() { int []arr = {2, 6, 15, 7, 6 }; int N = arr.Length; Console.Write(getMinDifference(arr, N)); } } // This code is contributed by SURENDRA_GANGWAR.
Javascript
<script> // JavaScript Program to implement // the above approach // Function to get the min difference // between max and min element of all // possible subarrays function getMinDifference(arr, n) { // To store the adjacent difference let diff; // To compare with min difference let mn = Number.MAX_VALUE; for (let i = 1; i < n; i++) { // Storing adjacent difference diff = Math.abs(arr[i] - arr[i - 1]); // Updating the min difference mn = Math.min(diff, mn); } // Returning min difference return mn; } // Driver code let arr = [2, 6, 15, 7, 6]; let N = arr.length; document.write(getMinDifference(arr, N)); // This code is contributed by Potta Lokesh </script>
1
Complejidad de tiempo : O(N), N es el número de elementos
Espacio auxiliar : O(1)
Publicación traducida automáticamente
Artículo escrito por subhankarjadab y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA