Помогите пожалуйста с задачей на js
Вам будет предоставлен массив целых чисел. Ваша задача - взять этот массив и найти индекс N, в котором сумма целых чисел слева от N равна сумме целых чисел справа от N.(N не входит в сумму) Если нет индекса, который позволил бы это сделать, верните значение .-1
Мое решение:
function findEvenIndex(arr) {
for (let i = 0;i<arr.length;i++) {
let leftSum = arr.slice(0, i + 1).reduce((acc, value) => acc + value);
let rightSum = arr.slice(i+2,arr.length).reduce((acc, value) => acc + value)
if (leftSum===rightSum) {
return i+1
break
}
}
return -1
}
тут я прохожусь циклом по массиву и сравниваю левую и правую частей массива n
[1,2,3,4,3,2,1]-на этом тесте все хорошо: выдает 3
[1,100,50,-51,1,1]-тут тоже: выдает 1
[1,2,3,4,5,6]-вот тут выдает ошибку,
let rightSum = arr.slice(i+2,arr.length).reduce((acc, value) => acc + value)
^
TypeError: Reduce of empty array with no initial value
Подскажите в чем проблема
Еще рабочий вариант..
var arr = [3,4,3,6,5,5];
function find_ind (a,n) {
var parts = [a.slice(0, n),a.slice(n + 1)]
function sums (x) {
sum = 0;
for (var i = 0; i < x.length; i++) {
sum += x[i]
};
return sum;
};
return sums(parts[0]) == sums(parts[1]);
}
var result = -1;
for (var i = 0; i < arr.length; i++) {
if (find_ind(arr,i)) {result = i; break};
};
alert(result)
На примере массива [3,4,3,6,5,5] получили индекс 3
const findEvenIndex = (arr) => {
if (arr.length > 2) {
let left = arr[0];
let i = 1;
let right = arr.slice(2).reduce((s, a) => s + a, 0);
while (i < arr.length - 1) {
if (left === right) return i;
left += arr[i];
i += 1;
right -= arr[i];
}
}
return -1;
};
джжжжжжжжжжжжжжжжжжжджджжджджд