Minimize the difference between the maximum and minimum values of the modified array

Given an array A of n integers and integer X. You may choose any integer between , and add k to A[i] for each
. The task is to find the smallest possible difference between the maximum value of A and the minimum value of A after updating array A.
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++
// C++ program to find the minimum difference.#include <bits/stdc++.h>using namespace std;// Function to return required minimum differenceint 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 programint main(){ int n = 3, x = 3; int A[] = { 1, 3, 6 }; // function to return the answer cout << minDiff(n, x, A); return 0;} |
Java
// 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 |
Python3
# Python program to find the minimum difference. # Function to return required minimum differencedef 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 programn = 3x = 3A = [1, 3, 6 ] # function to return the answerprint(minDiff( n, x, A))# This code is contributed by ihritik |
C#
// 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// PHP program to find the minimum difference. // Function to return required minimum differencefunction 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 answerecho minDiff($n, $x, $A);// This code is contributed by ihritik?> |
Javascript
<script>// JavaScript program to find the minimum difference.// Function to return required minimum differencefunction 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 answerdocument.write( minDiff(n, x, A));// This code is contributed by SoumikMondal</script> |
0
Complexity Analysis:
- Time Complexity: O(n)
- Auxiliary Space: O(1)
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 zambiatek!



