Leetcode416.分割等和子集
阿新 • • 發佈:2021-12-21
Leetcode416.分割等和子集
題目
給你一個 只包含正整數 的 非空 陣列 nums
。請你判斷是否可以將這個陣列分割成兩個子集,使得兩個子集的元素和相等。
用例
輸入:nums = [1,5,11,5]
輸出:true
解釋:陣列可以分割成 [1, 5, 5] 和 [11] 。
輸入:nums = [1,2,3,5]
輸出:false
解釋:陣列不能分割成兩個元素和相等的子集。
求解
/** * @param {number[]} nums * @return {boolean} */ var canPartition = function(nums) { let sum = 0 for(let i=0;i<nums.length;i++){ sum=sum+nums[i] } if(sum%2!=0) return false let target = sum/2 let dp= new Array(nums.length+1).fill(0).map(() => new Array(target+1).fill(false)) console.log(dp.length) console.log(dp[0].length) for(let i=1;i<dp.length;i++){ for(let j=1;j<dp[0].length;j++){ if(nums[i-1]==j){ dp[i][j]=true }else{ dp[i][j]= dp[i-1][j] || (j-nums[i-1]>=0?dp[i-1][j-nums[i-1]]:false) } if(dp[i][target]) return true } } console.log(dp) return false };