Skip to content

Instantly share code, notes, and snippets.

@harshithjv
Last active April 29, 2020 08:50
Show Gist options
  • Select an option

  • Save harshithjv/bcecbc4ae40d0a20c4dcb2399dee7f1a to your computer and use it in GitHub Desktop.

Select an option

Save harshithjv/bcecbc4ae40d0a20c4dcb2399dee7f1a to your computer and use it in GitHub Desktop.
Find minimum absolute difference between the left sum and the right sum of each element in an unsorted array.

Given an unsorted array, find the minimum absolute difference between the left sum and the right sum of each element.

Example: Arr = [3,1,2,4,3]

1st diff = |3 - 10| = 7 => leftSum = 3, rightSum = 10 2nd diff = |4 - 9| = 5 => leftSum = 4, rightSum = 9 3rd diff = |6 - 7| = 1 => leftSum = 6, rightSum = 7 4th diff = |10 - 3| = 7 => leftSum = 10, rightSum = 3

Minimum Difference = 1

Solution 1

var min = Infinity
for (var i=0; i < N; i++) {
  leftSum = 0;
  for(var j=0; j < i+1; j++){
    leftSum += Arr[j];
  }
  rightSum = 0;
  for (var k =i; k < N; k++) {
    rightSum += Arr[k];
  }
  var diff = Math.abs(leftSum - rightSum);
  if (min < diff) {
    min = diff;
  }
}

Solution 2

**optimise leftSum and rightSum by declaring it outside. Init leftSum = 0 and rightSum= total of all items in array. Subtract rightSum each time with current element in the array.

let Arr = [3,1,2,4,3];

const findMinAbsDiff = (arr) => {
  let min = Infinity;
  let leftSum = 0;
  let rightSum = arr.reduce((acc, item) => acc + item, 0);
  
  arr.forEach(item => {
    leftSum += item;
    rightSum -= item;
    const diff = Math.abs(leftSum - rightSum);
    if (min > diff) {
        min = diff;
    }
  });
  
  return min;
}

findMinAbsDiff(Arr);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment