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
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;
}
}
**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);