Related Articles
Minimize the difference between the maximum and minimum values of the modified array
• Difficulty Level : Easy
• Last Updated : 02 Nov, 2018

Given an array A of n integers and 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 the 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 and subtract -2 from a.


## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

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.

## CPP

 // C++ program to find the minimum difference.#include using namespace std;  // Function to return required minimum differenceint minDiff(int n, int x, int A[]){    int mn = A, mx = A;      // 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, mx = A;              // 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     mx =  A       # 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 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, mx = A;              // 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

 
Output:
0


Time Complexity: O(n)

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.

My Personal Notes arrow_drop_up