Vấn đề
Chúng ta cần viết một hàm JavaScript nhận vào một mảng số nguyên arr làm đối số duy nhất. Hàm phải chọn và trả về một chỉ số từ mảng sao cho tổng các phần tử bên trái của nó bằng tổng các phần tử bên phải. Nếu không tồn tại chỉ số như vậy, trả về -1.
Ví dụ, nếu đầu vào là:
Đầu vào
const arr = [1, 2, 3, 4, 3, 2, 1];
Đầu ra
const output = 3;
Giải thích
Vì tổng các phần tử ở hai bên chỉ số 3 đều bằng nhau (6).
Ví dụ
Dưới đây là mã thực hiện:
const arr = [1, 2, 3, 4, 3, 2, 1];
const balancingIndex = (arr = []) => {
const findSum = arr => arr.reduce((acc, x) => acc + x, 0);
for (let i = 0; i < arr.length; i++) {
const leftSum = findSum(arr.slice(0, i));
const rightSum = findSum(arr.slice(i + 1));
if (leftSum === rightSum) {
return i;
}
}
return -1;
};
console.log(balancingIndex(arr));
Kết quả
3