Given an array A of n integers and integer X. You may choose any integer between
Examples:
Input: arr[] = {1, 3, 6}, x = 3 Output: 0 New array is [3, 3, 3] or [4, 4, 4]. Input: arr[] = {0, 10}, x = 2 Output: 6 New array is [2, 8] i.e add 2 to a[0] and subtract -2 from a[1].
Approach: Let A be the original array. Towards trying to minimize max(A) – min(A), let’s try to minimize max(A) and maximize min(A) separately.
The smallest possible value of max(A) is max(A) – K, as the value max(A) cannot go lower. Similarly, the largest possible value of min(A) is min(A) + K. So the quantity max(A) – min(A) is at least ans = (max(A) – K) – (min(A) + K).
We can attain this value, by the following modifications
- If A[i] <= min(A) + K, then A[i] = min(A) + K
- Else, if A[i] >= max(A) – K, then A[i] = max(A) – K
If ans < 0, the best answer we could have is ans = 0, also using the same modification.
Below is the implementation of above approach.
// C++ program to find the minimum difference. #include <bits/stdc++.h> using namespace std;
// Function to return required minimum difference int minDiff( int n, int x, int A[])
{ int mn = A[0], mx = A[0];
// finding minimum and maximum values
for ( int i = 0; i < n; ++i) {
mn = min(mn, A[i]);
mx = max(mx, A[i]);
}
// returning minimum possible difference
return max(0, mx - mn - 2 * x);
} // Driver program int main()
{ int n = 3, x = 3;
int A[] = { 1, 3, 6 };
// function to return the answer
cout << minDiff(n, x, A);
return 0;
} |
// Java program to find the minimum difference. import java.util.*;
class GFG
{ // Function to return required minimum difference
static int minDiff( int n, int x, int A[])
{
int mn = A[ 0 ], mx = A[ 0 ];
// finding minimum and maximum values
for ( int i = 0 ; i < n; ++i) {
mn = Math.min(mn, A[i]);
mx = Math.max(mx, A[i]);
}
// returning minimum possible difference
return Math.max( 0 , mx - mn - 2 * x);
}
// Driver program
public static void main(String []args)
{
int n = 3 , x = 3 ;
int A[] = { 1 , 3 , 6 };
// function to return the answer
System.out.println(minDiff(n, x, A));
}
} // This code is contributed by ihritik |
# Python program to find the minimum difference. # Function to return required minimum difference def minDiff( n, x, A):
mn = A[ 0 ]
mx = A[ 0 ]
# finding minimum and maximum values
for i in range ( 0 ,n):
mn = min ( mn, A[ i])
mx = max ( mx, A[ i])
# returning minimum possible difference
return max ( 0 , mx - mn - 2 * x)
# Driver program n = 3
x = 3
A = [ 1 , 3 , 6 ]
# function to return the answer print (minDiff( n, x, A))
# This code is contributed by ihritik |
// C# program to find the minimum difference. using System;
class GFG
{ // Function to return required minimum difference
static int minDiff( int n, int x, int []A)
{
int mn = A[0], mx = A[0];
// finding minimum and maximum values
for ( int i = 0; i < n; ++i) {
mn = Math.Min(mn, A[i]);
mx = Math.Max(mx, A[i]);
}
// returning minimum possible difference
return Math.Max(0, mx - mn - 2 * x);
}
// Driver program
public static void Main()
{
int n = 3, x = 3;
int []A = { 1, 3, 6 };
// function to return the answer
Console.WriteLine(minDiff(n, x, A));
}
} // This code is contributed by ihritik |
<?php // PHP program to find the minimum difference. // Function to return required minimum difference function minDiff( $n , $x , $A )
{ $mn = $A [0];
$mx = $A [0];
// finding minimum and maximum values
for ( $i = 0; $i < $n ; ++ $i ) {
$mn = min( $mn , $A [ $i ]);
$mx = max( $mx , $A [ $i ]);
}
// returning minimum possible difference
return max(0, $mx - $mn - 2 * $x );
} // Driver program $n = 3;
$x = 3;
$A = array ( 1, 3, 6 );
// function to return the answer echo minDiff( $n , $x , $A );
// This code is contributed by ihritik ?> |
<script> // JavaScript program to find the minimum difference. // Function to return required minimum difference function minDiff( n, x, A)
{ var mn = A[0], mx = A[0];
// finding minimum and maximum values
for ( var i = 0; i < n; ++i) {
mn = Math.min(mn, A[i]);
mx = Math.max(mx, A[i]);
}
// returning minimum possible difference
return Math.max(0, mx - mn - 2 * x);
} var n = 3, x = 3;
var A = [ 1, 3, 6 ];
// function to return the answer document.write( minDiff(n, x, A)); // This code is contributed by SoumikMondal </script> |
Output
0
Complexity Analysis:
- Time Complexity: O(n)
- Auxiliary Space: O(1)