Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit 59b6945

Browse files
refactor 377
1 parent aa9f09f commit 59b6945

File tree

2 files changed

+25
-22
lines changed

2 files changed

+25
-22
lines changed

src/main/java/com/fishercoder/solutions/_377.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -78,19 +78,19 @@ public static class Solution3 {
7878
*/
7979
public int combinationSum4(int[] nums, int target) {
8080
Arrays.sort(nums);
81-
int[] result = new int[target + 1];
82-
for (int i = 1; i < result.length; i++) {
81+
int[] dp = new int[target + 1];
82+
for (int i = 1; i < dp.length; i++) {
8383
for (int num : nums) {
8484
if (num > i) {
8585
break;
8686
} else if (num == i) {
87-
result[i]++;
87+
dp[i]++;
8888
} else {
89-
result[i] += result[i - num];
89+
dp[i] += dp[i - num];
9090
}
9191
}
9292
}
93-
return result[target];
93+
return dp[target];
9494
}
9595
}
9696

@@ -101,7 +101,7 @@ public static class Solution4 {
101101
* <p>
102102
* Reference: https://discuss.leetcode.com/topic/52255/java-recursion-solution-using-hashmap-as-memory
103103
*/
104-
public static Map<Integer, Integer> map = new HashMap<>();//need to remove public static before submitting on Leetcode as it doesn't reset static variables
104+
Map<Integer, Integer> map = new HashMap<>();
105105

106106
public int combinationSum4(int[] nums, int target) {
107107
if (nums == null || nums.length == 0 || target < 0) {

src/test/java/com/fishercoder/_377Test.java

Lines changed: 19 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -14,53 +14,56 @@ public class _377Test {
1414
private static _377.Solution4 solution4;
1515
private static int[] nums;
1616
private static int target;
17+
private static int expected;
1718

1819
@BeforeClass
1920
public static void setup() {
2021
solution1 = new _377.Solution1();
2122
solution2 = new _377.Solution2();
2223
solution3 = new _377.Solution3();
23-
solution4 = new _377.Solution4();
2424
}
2525

2626
@Before
2727
public void setUp() throws Exception {
2828
//always have to reset these global variables before using it again
2929
solution2.count = 0;
30-
solution4.map.clear();
30+
solution4 = new _377.Solution4();
3131
}
3232

3333
@Test
3434
public void test1() {
35-
nums = new int[]{1,2,3};
35+
nums = new int[]{1, 2, 3};
3636
target = 4;
37-
assertEquals(7, solution1.combinationSum4(nums, target));
38-
assertEquals(7, solution2.combinationSum4(nums, target));
39-
assertEquals(7, solution3.combinationSum4(nums, target));
40-
assertEquals(7, solution4.combinationSum4(nums, target));
37+
expected = 7;
38+
assertEquals(expected, solution1.combinationSum4(nums, target));
39+
assertEquals(expected, solution2.combinationSum4(nums, target));
40+
assertEquals(expected, solution3.combinationSum4(nums, target));
41+
assertEquals(expected, solution4.combinationSum4(nums, target));
4142
}
4243

4344
@Test
4445
public void test2() {
45-
nums = new int[]{4,2,1};
46+
nums = new int[]{4, 2, 1};
4647
target = 32;
48+
expected = 39882198;
4749
// assertEquals(39882198, solution1.combinationSum4(nums, target));//this results in MLE, so comment out
4850

49-
assertEquals(39882198, solution2.combinationSum4(nums, target));
51+
assertEquals(expected, solution2.combinationSum4(nums, target));
5052

51-
assertEquals(39882198, solution3.combinationSum4(nums, target));
53+
assertEquals(expected, solution3.combinationSum4(nums, target));
5254

53-
assertEquals(39882198, solution4.combinationSum4(nums, target));
55+
assertEquals(expected, solution4.combinationSum4(nums, target));
5456
}
5557

5658
@Test
5759
public void test3() {
5860
nums = new int[]{9};
5961
target = 3;
60-
assertEquals(0, solution1.combinationSum4(nums, target));
61-
assertEquals(0, solution2.combinationSum4(nums, target));
62-
assertEquals(0, solution3.combinationSum4(nums, target));
63-
assertEquals(0, solution4.combinationSum4(nums, target));
62+
expected = 0;
63+
assertEquals(expected, solution1.combinationSum4(nums, target));
64+
assertEquals(expected, solution2.combinationSum4(nums, target));
65+
assertEquals(expected, solution3.combinationSum4(nums, target));
66+
assertEquals(expected, solution4.combinationSum4(nums, target));
6467
}
6568

66-
}
69+
}

0 commit comments

Comments
 (0)