Skip to content

Commit 95ca6b8

Browse files
Create PartitionEqualSubsetSum.java
1 parent 89cd153 commit 95ca6b8

File tree

1 file changed

+45
-0
lines changed

1 file changed

+45
-0
lines changed
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
class PartitionEqualSubsetSum {
2+
public boolean canPartition(int[] nums) {
3+
4+
int n = nums.length;
5+
6+
int k = 0; // total possible sum
7+
for(int i = 0; i<n; i++){
8+
k += nums[i];
9+
}
10+
11+
if(k%2 != 0){
12+
return false;
13+
}
14+
15+
int subsetSum = k/2;
16+
17+
boolean dp[][] = new boolean[n][subsetSum+1];
18+
19+
for(int i = 0; i<n; i++){
20+
dp[i][0] = true;
21+
}
22+
23+
for(int j = 0; j<subsetSum; j++){
24+
if(j == nums[0]){
25+
dp[0][j] = true;
26+
}
27+
}
28+
29+
for(int i = 1; i<n; i++){
30+
for(int j = 1; j<subsetSum+1; j++){
31+
if(nums[i]<=subsetSum){
32+
dp[i][nums[i]] = true;
33+
}
34+
if(j>=nums[i]){
35+
dp[i][j] = dp[i-1][j] || dp[i-1][j-nums[i]];
36+
}
37+
else{
38+
dp[i][j] = dp[i-1][j];
39+
}
40+
}
41+
}
42+
43+
return dp[n-1][subsetSum];
44+
}
45+
}

0 commit comments

Comments
 (0)