JavaScript 中和值子陣列對


我們需要編寫一個 JavaScript 函式,該函式以整數陣列作為唯一引數。

該函式應當確定是否存在一種方法,將陣列分成兩個子陣列,使得兩個子陣列中元素之和相等。在將元素劃分為子陣列時,我們必須確保原始陣列中的所有元素都沒有遺漏。

例如:

如果輸入陣列為:

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

那麼輸出應當為:

const output = true;

因為所需的子陣列為:[5, 3, 4, 6] 和 [7, 1, 8, 2],它們的和都為 18。

示例

以下是程式碼:

const arr = [5, 3, 7, 4, 1, 8, 2, 6];
const canPartition = (arr = []) => {
   const sum = arr.reduce((acc, val) => acc + val);
   if (sum % 2 !== 0){
      return false;
   };
   const target = sum / 2;
   const array = new Array(target + 1).fill(false);
   array[0] = true;
   for (const num of arr) {
      if (array[target - num]){
         return true
      };
      for (let i = target; i >= num; i--) {
         array[i] = array[i - num];
      }
   }
   return false;
};
console.log(canPartition(arr));

輸出

以下是控制檯輸出:

true

更新於: 2021-01-27

116 檢視

開啟您的職業生涯

完成課程,獲得認證

開始
廣告