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
廣告