在 JavaScript 中找到具有相等和的 n 個子陣列
我們需要編寫一個 JavaScript 函式,它的第一個引數接受一個整型陣列,第二個引數接受一個整數。
該函式應檢查是否能從原始陣列中建立 n(第二個引數)個子陣列,使得所有子陣列的和相等。
例如 −
如果輸入是 −
const arr = [4, 3, 2, 3, 5, 2, 1]; const num = 4;
輸出應為 true,因為子陣列是:[5]、[1, 4]、[2, 3]、[2, 3],它們的和均為 5。
示例
以下是程式碼 −
const arr = [4, 3, 2, 3, 5, 2, 1]; const num = 4; const canFormSubarray = (arr = [], num) => { const total = arr.reduce((sum, num) => sum + num, 0); if (total % num !== 0) { return false; } const target = total / num; const visited = new Array(arr.length).fill(false); const canPartition = (start, numberOfSubsets, currentSum) => { if (numberOfSubsets === 1) { return true; } if (currentSum === target) { return canPartition(0, numberOfSubsets - 1, 0); }; for (let i = start; i < arr.length; i++) { if (!visited[i]) { visited[i] = true; if (canPartition(i + 1, numberOfSubsets, currentSum + arr[i])) { return true; } visited[i] = false; }; }; return false; }; return canPartition(0, num, 0); }; console.log(canFormSubarray(arr, num));
輸出
以下是控制檯輸出 −
true
廣告