5
5
/**
6
6
* * Minimum Subset Sum Difference (Extension of 0/1 Knapsack)
7
7
*/
8
-
9
8
public class Solution {
10
9
public int minimumSubsetSumDifference (int [] array ) {
11
10
int sum = Arrays .stream (array ).sum ();
@@ -22,7 +21,7 @@ public int minimumSubsetSumDifference(int[] array) {
22
21
23
22
/**
24
23
* * Dynamic Programming Approach
25
- *
24
+ *
26
25
* * TC: O(ns)
27
26
* * SC: O(ns)
28
27
*/
@@ -66,11 +65,12 @@ private boolean[] subsetSum(int[] array, int sum) {
66
65
67
66
/**
68
67
* * Memoization Approach
69
- *
68
+ *
70
69
* * TC: O(ns)
71
70
* * SC: O(ns)
72
71
*/
73
- // private int minimumSubsetSumDifferenceMem(int index, int[] array, int sumOne, int sumTwo, int[][] cache) {
72
+ // private int minimumSubsetSumDifferenceMem(int index, int[] array, int sumOne, int sumTwo,
73
+ // int[][] cache) {
74
74
// if (index == 0)
75
75
// return Math.abs(sumOne - sumTwo);
76
76
@@ -87,19 +87,19 @@ private boolean[] subsetSum(int[] array, int sum) {
87
87
88
88
/**
89
89
* * Recursive Approach
90
- *
90
+ *
91
91
* * TC: O(2^n) approximately
92
92
* * SC: O(2^n) approximately
93
93
*/
94
94
// private int minimumSubsetSumDifferenceRec(int index, int[] array, int sumOne, int sumTwo) {
95
95
// if (index == 0) return Math.abs(sumOne - sumTwo);
96
96
97
- // return Math.min(
98
- // minimumSubsetSumDifferenceRec(
99
- // index - 1, array, sumOne - array[index - 1], sumTwo + array[index - 1]
100
- // ),
101
- // minimumSubsetSumDifferenceRec(index - 1, array, sumOne, sumTwo)
102
- // );
97
+ // return Math.min(
98
+ // minimumSubsetSumDifferenceRec(
99
+ // index - 1, array, sumOne - array[index - 1], sumTwo + array[index - 1]
100
+ // ),
101
+ // minimumSubsetSumDifferenceRec(index - 1, array, sumOne, sumTwo)
102
+ // );
103
103
// }
104
104
105
105
public static void main (String [] args ) {
@@ -109,6 +109,6 @@ public static void main(String[] args) {
109
109
System .out .println (solution .minimumSubsetSumDifference (new int [] {1 , 6 , 5 , 11 }));
110
110
111
111
// should be 1
112
- System .out .println (solution .minimumSubsetSumDifference (new int [] {2 ,7 , 4 , 1 , 8 , 1 }));
112
+ System .out .println (solution .minimumSubsetSumDifference (new int [] {2 , 7 , 4 , 1 , 8 , 1 }));
113
113
}
114
114
}
0 commit comments