From 530422fa3ecf004d27f45552e909506947992902 Mon Sep 17 00:00:00 2001 From: Luo <82520819+Jerry-306@users.noreply.github.com> Date: Mon, 23 May 2022 10:04:15 +0800 Subject: [PATCH] =?UTF-8?q?0416.=E5=88=86=E5=89=B2=E7=AD=89=E5=92=8C?= =?UTF-8?q?=E5=AD=90=E9=9B=86=20=E6=96=B0=E5=A2=9E=20typescript=20?= =?UTF-8?q?=E8=A7=A3=E6=B3=95=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- problems/0416.分割等和子集.md | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/problems/0416.分割等和子集.md b/problems/0416.分割等和子集.md index 6e93ae8e..01ea825e 100644 --- a/problems/0416.分割等和子集.md +++ b/problems/0416.分割等和子集.md @@ -416,7 +416,24 @@ 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; +}; +``` -----------------------