From 4d44bb16d2b605a3bae1a12eb3fe5806893b9ebd Mon Sep 17 00:00:00 2001 From: Gaurang Telang <58006887+gstelang@users.noreply.github.com> Date: Sat, 24 Jul 2021 09:59:08 -0700 Subject: [PATCH] Create array-equal-split-index.js --- array-equal-split-index.js | 41 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 array-equal-split-index.js diff --git a/array-equal-split-index.js b/array-equal-split-index.js new file mode 100644 index 0000000..a70f2a3 --- /dev/null +++ b/array-equal-split-index.js @@ -0,0 +1,41 @@ + +const findIndex = (arr) => { + if (arr.length === 1 || arr.length === 2) { + console.log(`no index for arr with length ${arr.length}`); + return; + } + + const sum = arr.reduce((acc, val) => acc + val, 0); + + let leftSum = 0, + rightSum = sum - arr[0], + index = 1, + missingIndex = 0; + + while (index < arr.length) { + + // console.log(`${index} => ${leftSum}, ${rightSum}`); + if (leftSum === rightSum) { + // console.log('found index'); + missingIndex = index - 1; + break; + } + rightSum = rightSum - arr[index]; + leftSum = leftSum + arr[index - 1]; + index = index + 1; + } + + + if (missingIndex === 0) { + console.log('no such index'); + } else { + console.log(missingIndex); + } +}; + +findIndex([1]); +findIndex([1, 2]); +findIndex([1, 2, 3]); // no index +findIndex([2, 2, 2]); // index at 1 +findIndex([1, 2, 3, 4, 10, 9, 5, 5, 4, 6]); // index at 5 +