Skip to content

Instantly share code, notes, and snippets.

@sava-vidakovic
Last active March 31, 2023 06:22
Show Gist options
  • Save sava-vidakovic/bbb2ab432d7ac6b512c210aca4c238cc to your computer and use it in GitHub Desktop.
Save sava-vidakovic/bbb2ab432d7ac6b512c210aca4c238cc to your computer and use it in GitHub Desktop.
// Equal Sides Of An Array
function findEvenIndex(arr) {
var sum = 0,
leftSum = 0;
for (var i = 0; i < arr.length; i++) {
sum += arr[i];
}
for (var i = 0; i < arr.length; i++) {
sum -= arr[i];
if (leftSum === sum) {
return i;
}
leftSum += arr[i];
}
return -1;
}
@younes-benniz
Copy link

function findEvenIndex(arr) {
  const reducer = (acc, curr) => acc + curr;
  
  let leftSum = 0
  let rightSum = arr.reduce(reducer, 0);  
  
  arr.forEach((num, i) => {
    rightSum -= num;
    
    if (leftSum === rightSum) {
      return i;
    }
    
    leftSum += num;
  })

  return -1;
}

I tried refactoring this, but it won't work. Can someone help me debug this?

Here's a working version of it
function findEvenIndex(arr) {
  let leftSum = 0;
  let rightSum = arr.reduce((acc, curr) => acc + curr, 0) - arr[0];

  if (rightSum === 0) return 0;
  
  for (let i = 0; i < arr.length - 1; i++) {
    leftSum += arr[i];
    rightSum -= arr[i+1];
    if (leftSum === rightSum){
      return i + 1;
    };
  }
  
  if (arr.reduce((acc, curr) => acc + curr, 0) - arr[arr.length - 1] === 0) return arr.length - 1;
  if (!rightSum) return -1;
  return -1;
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment