Computer >> Máy Tính >  >> Lập trình >> Javascript

Mảng thứ ba có tổng bằng nhau trong JavaScript

Vấn đề

Chúng tôi được yêu cầu viết một hàm JavaScript lấy một mảng các số nguyên làm đối số đầu tiên và duy nhất. Hàm của chúng ta sẽ trả về true nếu và chỉ khi chúng ta có thể phân chia mảng thành ba phần không trống với các tổng bằng nhau, ngược lại là false.

Ví dụ:nếu đầu vào của hàm là -

const arr = [3, 3, 6, 5, -2, 2, 5, 1, -9, 4];

Sau đó, đầu ra phải là -

const output = true;

Giải thích đầu ra

Bởi vì,

3 + 3 = 6 = 5 - 2 + 2 + 5 + 1 - 9 + 4

Ví dụ

Mã cho điều này sẽ là -

const arr = [3, 3, 6, 5, -2, 2, 5, 1, -9, 4];
const thirdSum = (arr = []) => {
   const sum = arr.reduce((acc, val) => acc + val, 0);
   if(!Number.isInteger(sum / 3)){
      return false;
   };
   let count = 0;
   let curr = 0;
   const target = sum / 3;
   for(const num of arr){
      curr += num;
      if(curr === target){
         curr = 0;
         count += 1;
      };
   };
   return count === 3 && curr === 0;
};
console.log(thirdSum(arr));

Đầu ra

Và đầu ra trong bảng điều khiển sẽ là -

true