首页 > 代码库 > 6kyu Equal Sides Of An Array
6kyu Equal Sides Of An Array
题目:
You are going to be given an array of integers. Your job is to take that array and find an index N where the sum of the integers to the left of N is equal to the sum of the integers to the right of N. If there is no index that would make this happen, return -1.
#For example:
Let‘s say you are given the array {1,2,3,4,3,2,1}:
Your function will return the index 3, because at the 3rd position of the array, the sum of left side of the index ({1,2,3}) and the sum of the right side of the index ({3,2,1}) both equal 6.
Let‘s look at another one.
You are given the array {1,100,50,-51,1,1}:
Your function will return the index 1, because at the 1st position of the array, the sum of left side of the index ({1}) and the sum of the right side of the index ({50,-51,1,1}) both equal 1.
Note: Please remember that in most programming/scripting languages the index of an array starts at 0.
#Input: An integer array of length 0 < arr < 1000. The numbers in the array can be any integer positive or negative.
#Output: The lowest index N where the side to the left of N is equal to the side to the right of N. If you do not find an index that fits these rules, then you will return -1.
#Note: If you are given an array with multiple answers, return the lowest correct index.
An empty array should be treated like a 0 in this problem.
答案:
// 1
function findEvenIndex (arr) {
function eleadd (x, y) {
return x + y;
}
var i;
for (var i = 1; i < arr.length - 1; i++) {
if (arr.slice(0, i).reduce(eleadd)) {
return i;
}
}
return -1;
}
// 2
function findEventIndex (arr) {
for (var i = 1; i < arr.length - 1; i++) {
if (arr.slice(0, i).reduce((a, b) => a + b) === arr.slice(i + 1).reduce((a, b) => a + b)) {
return i;
}
}
return -1;
}
// 3
function findEventIndex (arr) {
var left = 0, right = arr.reduce(function (pv, cv) {
return pv + cv;
}, 0);
for (var i = 0; i < arr.length; i++) {
if (i > 0) {
left += arr[i - 1];
right -= arr[i];
}
if (left == right) {
return i;
}
}
return -1;
}
6kyu Equal Sides Of An Array