Minimize the maximum difference between adjacent elements in an array

Posted: 24 Nov, 2020
Difficulty: Easy

PROBLEM STATEMENT

Try Problem

You are given a non-decreasing array and an integer K. You need to remove exactly K integers from the given array such that the maximum difference between adjacent elements is minimum.

For example:
If the given array is: [2 6 7 7 10] and K = 2. We need to remove A[0] = 2 and A[4] = 10, then the resultant array would become [6 7 7], where the difference between adjacent pairs are {1, 0}. Thus our answer would be 1. You can see that there would not be any better answer than 1 for this array
Input Format:
The first line of input contains a single integer T, representing the number of test cases or queries to be run. 

Then the T test cases follow.

The first line of each test case contains two space-separated integers N and K representing the length of the array and the number of integers to be removed.

The second line of each test case contains N space-separated integers denoting the elements of the given array.
Output Format:
For each test case, print the maximum difference between adjacent elements is minimum after K integers are removed, in a separate line.
Constraints:
1 ≤ T ≤ 100
3 ≤ N ≤ 1000
1 ≤ Ai ≤ 10^6
0 ≤ K ≤ N - 2

Time Limit : 1 sec 
Note:
You are not required to print the expected output, it has already been taken care of. Just implement the function.
Approach 1
  • Generate all the possible subsets of size N - K.
  • This is because in the final array only N - K elements would remain.
  • This can be done by doing Complete Search.
  • Now take the maximum difference between adjacent elements.
  • Take the minimum of all these subsets and return it as the answer.
Try Problem