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

Bộ ba với tổng mong muốn trong JavaScript

Chúng tôi được yêu cầu viết một hàm JavaScript nhận một mảng số làm đối số thứ nhất và một số làm đối số thứ hai. Hàm phải chuẩn bị và trả về một mảng gồm tất cả các bộ ba như vậy (liên tiếp hoặc không liên tiếp), cộng lại đến số lượng được chỉ định bởi đối số thứ hai.

Ví dụ -

Nếu mảng đầu vào và số là -

const arr = [4, 2, 0, 1, 2, 6, 8, 3, 2, 5];
const num = 8;

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

const output = [ [ 2, 2, 4 ], [ 1, 3, 4 ], [ 0, 2, 6 ], [ 1, 2, 5 ] ];

Ví dụ

Sau đây là mã -

const arr = [4, 2, 0, 1, 2, 6, 8, 3, 2, 5];
const num = 8;
const tripletSum = (arr, num) => {
   if (arr.length === 3) {
      if (arr[0]+arr[1]+arr[2] === 0) {
         return [[arr[0],arr[1],arr[2]]];
      };
   };
   const results = [];
   const hashMap = {};
   for (var i=0; i<arr.length; i++) {
      for (var j=i+1; j<arr.length; j++) {
         for (var k=j+1; k<arr.length; k++) {
            if (arr[i]+arr[j]+arr[k] === num) {
               if (!hashMap[arr[i]*arr[j]*arr[k]]) {
                  results.push([arr[i],arr[j],arr[k]]);
                  results[results.length-1].sort();
                  hashMap[arr[i]*arr[j]*arr[k]] = true;
               }
            }
         }
      }
   }
   return results;
};
console.log(tripletSum(arr, num));

Đầu ra

Sau đây là đầu ra của bảng điều khiển -

[ [ 2, 2, 4 ], [ 1, 3, 4 ], [ 0, 2, 6 ], [ 1, 2, 5 ] ]