Top.Mail.Ru
Ответы

Помогите пожалуйста с задачей на js

Вам будет предоставлен массив целых чисел. Ваша задача - взять этот массив и найти индекс N, в котором сумма целых чисел слева от N равна сумме целых чисел справа от N.(N не входит в сумму) Если нет индекса, который позволил бы это сделать, верните значение .-1
Мое решение:

123456789101112
 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
Подскажите в чем проблема

Только авторизированные пользователи могут оставлять свои ответы
Дата
Популярность
Аватар пользователя
Новичок

Еще рабочий вариант..

1234567891011121314151617181920
 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

Аватар пользователя
Высший разум
1234567891011121314
 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; 
}; 
Аватар пользователя
Знаток

джжжжжжжжжжжжжжжжжжжджджжджджд