Skip to content

Commit b11f859

Browse files
author
Kohei Asai
authored
416. Partition Equal Subset Sum (#66)
1 parent 8909bfc commit b11f859

File tree

2 files changed

+39
-0
lines changed

2 files changed

+39
-0
lines changed
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import canPartition from "./partitionEqualSubsetSum";
2+
3+
describe("416. Partition Equal Subset Sum", () => {
4+
test("#1", () => {
5+
expect(canPartition([1, 5, 11, 5])).toBe(true);
6+
});
7+
8+
test("#2", () => {
9+
expect(canPartition([1, 2, 3, 5])).toBe(false);
10+
});
11+
12+
test("#3", () => {
13+
expect(canPartition([8, 6, 3, 4, 5])).toBe(true);
14+
});
15+
});

solutions/partitionEqualSubsetSum.ts

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
// 416. Partition Equal Subset Sum
2+
// https://leetcode.com/problems/partition-equal-subset-sum/
3+
function canPartition(nums: number[]): boolean {
4+
const total = nums.reduce((total, num) => total + num, 0);
5+
6+
if (total % 2 !== 0) return false;
7+
8+
const target = total / 2;
9+
const dp = new Array(total + 1).fill(false);
10+
11+
dp[0] = true;
12+
13+
for (const num of nums) {
14+
if (dp[target - num]) return true;
15+
16+
for (let i = target; i >= num; --i) {
17+
dp[i] = dp[i - num];
18+
}
19+
}
20+
21+
return false;
22+
}
23+
24+
export default canPartition;

0 commit comments

Comments
 (0)