mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-09 03:34:02 +08:00
Merge pull request #1280 from xiaofei-2020/dp13
添加(0416.分割等和子集.md):增加typescript
This commit is contained in:
@ -416,6 +416,61 @@ var canPartition = function(nums) {
|
||||
};
|
||||
```
|
||||
|
||||
TypeScript:
|
||||
|
||||
> 一维数组,简洁
|
||||
|
||||
```typescript
|
||||
function canPartition(nums: number[]): boolean {
|
||||
const sum: number = nums.reduce((pre, cur) => pre + cur);
|
||||
if (sum % 2 === 1) return false;
|
||||
const bagSize: number = sum / 2;
|
||||
const goodsNum: number = nums.length;
|
||||
const dp: number[] = new Array(bagSize + 1).fill(0);
|
||||
for (let i = 0; i < goodsNum; i++) {
|
||||
for (let j = bagSize; j >= nums[i]; j--) {
|
||||
dp[j] = Math.max(dp[j], dp[j - nums[i]] + nums[i]);
|
||||
}
|
||||
}
|
||||
return dp[bagSize] === bagSize;
|
||||
};
|
||||
```
|
||||
|
||||
> 二维数组,易懂
|
||||
|
||||
```typescript
|
||||
function canPartition(nums: number[]): boolean {
|
||||
/**
|
||||
weightArr = nums;
|
||||
valueArr = nums;
|
||||
bagSize = sum / 2; (sum为nums各元素总和);
|
||||
按照0-1背包处理
|
||||
*/
|
||||
const sum: number = nums.reduce((pre, cur) => pre + cur);
|
||||
if (sum % 2 === 1) return false;
|
||||
const bagSize: number = sum / 2;
|
||||
const weightArr: number[] = nums;
|
||||
const valueArr: number[] = nums;
|
||||
const goodsNum: number = weightArr.length;
|
||||
const dp: number[][] = new Array(goodsNum)
|
||||
.fill(0)
|
||||
.map(_ => new Array(bagSize + 1).fill(0));
|
||||
for (let i = weightArr[0]; i <= bagSize; i++) {
|
||||
dp[0][i] = valueArr[0];
|
||||
}
|
||||
for (let i = 1; i < goodsNum; i++) {
|
||||
for (let j = 0; j <= bagSize; j++) {
|
||||
if (j < weightArr[i]) {
|
||||
dp[i][j] = dp[i - 1][j];
|
||||
} else {
|
||||
dp[i][j] = Math.max(dp[i - 1][j], dp[i - 1][j - weightArr[i]] + valueArr[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
return dp[goodsNum - 1][bagSize] === bagSize;
|
||||
};
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user