Skip to content
Advertisement

Find minimum group of array with difference less than k

I am working on code where I need to find the count of array group with difference between the elements of the array group should be less than k

Example The numbers of awards per movie are awards = [1, 5, 4, 6, 8, 9, 2], and the maximum allowed difference is k = 3.

  • One way to divide the movies into the minimum number of groups is:
    The first group can contain [2, 1]. The maximum difference between awards of any two movies is 1 which does not exceed k.

  • The second group can contain [5, 4, 6]. The maximum difference between awards of any two movies is 2 which does not exceed k

  • The third group can contain [8, 9]. The maximum difference between awards of any two movies is 1 which does not exceed k. The movies can be divided into a minimum of 3 groups.

below is my code But it is not working. What I am doinng wrong. Please help me.

function minimumGroups(arr, k) {
    // Write your code here
arr.sort();
  let start = 0;
  if(arr.length == 0)
    return 0;
  // If arr has some value then at least can form 1 group
  let count = 1;
  for(let i = 0; i < arr.length; i++) {
    if(arr[i] - arr[start] > k) {
      count++;
      start = i;
    }
  }
  return count;
}

Some of hidden test cases are not passing for same scenario

Arr =[ 1, 13, 6, 8, 9, 3, 5 ] and K= 4 Expected output is 3 but I am getting 2

Advertisement

Answer

This code snippet fixes the code by update the .sort().

function minimumGroups(arr, k) {
    // Write your code here
  arr.sort((a, b) => a-b);  // this line is updated.
  let start = 0;
  if(arr.length == 0) return 0;
  // If arr has some value then at least can form 1 group
  let count = 1;
  for(let i = 0; i < arr.length; i++) {
    if(arr[i] - arr[start] > k) {
      count++;
      start = i;
    }
  }
  return count;
};

console.log(minimumGroups([ 1, 13, 6, 8, 9, 3, 5 ], 4));
User contributions licensed under: CC BY-SA
8 People found this is helpful
Advertisement