GeezerVisonThe World Wide Web, restored to 800 pixels of glory. |
| Home|About|Gaming cabinet|Archives|How it works|Starter sites |
GeezerVison is showing github.com — JavaScript/Recursive/Partition.js at master · hackingstaar/JavaScript Expand file tree/ Copy pathPartition.jsMore file actions 39 lines (30 loc) · 1.15 KB / Copy pathPartition.jsFile metadata and controls39 lines (30 loc) · 1.15 KB 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 /** * @function canPartition * @description Check whether it is possible to partition the given array into two equal sum subsets using recursion. * @param {number[]} nums - The input array of numbers. * @param {number} index - The current index in the array being considered. * @param {number} target - The target sum for each subset. * @return {boolean}. * @see [Partition Problem](https://en.wikipedia.org/wiki/Partition_problem) */ const canPartition = (nums, index = 0, target = 0) => { if (!Array.isArray(nums)) { throw new TypeError('Invalid Input') } const sum = nums.reduce((acc, num) => acc + num, 0) if (sum % 2 !== 0) { return false } if (target === sum / 2) { return true } if (index >= nums.length || target > sum / 2) { return false } // Include the current number in the first subset and check if a solution is possible. const withCurrent = canPartition(nums, index + 1, target + nums[index]) // Exclude the current number from the first subset and check if a solution is possible. const withoutCurrent = canPartition(nums, index + 1, target) return withCurrent || withoutCurrent } export { canPartition } |
| You are visitor 01402520 — GeezerVison does not store the pages you look up. Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required. |