diff --git a/problems/0416.分割等和子集.md b/problems/0416.分割等和子集.md index eb6601e1..7347cd6f 100644 --- a/problems/0416.分割等和子集.md +++ b/problems/0416.分割等和子集.md @@ -417,6 +417,26 @@ var canPartition = function(nums) { ``` +TypeScript: + +```ts +function canPartition(nums: number[]): boolean { + const sum: number = nums.reduce((a: number, b: number): number => a + b); + if (sum % 2 === 1) return false; + const target: number = sum / 2; + // dp[j]表示容量(总数和)为j的背包所能装下的数(下标[0, i]之间任意取)的总和(<= 容量)的最大值 + const dp: number[] = new Array(target + 1).fill(0); + const n: number = nums.length; + for (let i: number = 0; i < n; i++) { + for (let j: number = target; j >= nums[i]; j--) { + dp[j] = Math.max(dp[j], dp[j - nums[i]] + nums[i]); + } + } + return dp[target] === target; +}; +``` + + C: 二维dp: ```c @@ -575,6 +595,5 @@ function canPartition(nums: number[]): boolean { - -----------------------