Skip to content

Commit 25b68c8

Browse files
refactor 416
1 parent 81d4199 commit 25b68c8

File tree

2 files changed

+38
-38
lines changed

2 files changed

+38
-38
lines changed

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

Lines changed: 33 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -31,46 +31,49 @@
3131
Explanation: The array cannot be partitioned into equal sum subsets.
3232
*/
3333
public class _416 {
34+
public static class Solution1 {
35+
/**
36+
* credit: https://discuss.leetcode.com/topic/67539/0-1-knapsack-detailed-explanation
37+
*/
38+
public boolean canPartition(int[] nums) {
39+
int sum = 0;
40+
for (int num : nums) {
41+
sum += num;
42+
}
3443

35-
/**credit: https://discuss.leetcode.com/topic/67539/0-1-knapsack-detailed-explanation*/
36-
public boolean canPartition(int[] nums) {
37-
int sum = 0;
38-
for (int num : nums) {
39-
sum += num;
40-
}
41-
42-
if ((sum & 1) == 1) {
43-
return false;
44-
}
44+
if ((sum & 1) == 1) {
45+
return false;
46+
}
4547

46-
sum /= 2;
48+
sum /= 2;
4749

48-
int n = nums.length;
49-
boolean[][] dp = new boolean[n + 1][sum + 1];
50-
for (int i = 0; i < dp.length; i++) {
51-
Arrays.fill(dp[i], false);
52-
}
50+
int n = nums.length;
51+
boolean[][] dp = new boolean[n + 1][sum + 1];
52+
for (int i = 0; i < dp.length; i++) {
53+
Arrays.fill(dp[i], false);
54+
}
5355

54-
dp[0][0] = true;
56+
dp[0][0] = true;
5557

56-
for (int i = 1; i < n + 1; i++) {
57-
dp[i][0] = true;
58-
}
59-
60-
for (int j = 1; j < sum + 1; j++) {
61-
dp[0][j] = false;
62-
}
58+
for (int i = 1; i < n + 1; i++) {
59+
dp[i][0] = true;
60+
}
6361

64-
for (int i = 1; i < n + 1; i++) {
6562
for (int j = 1; j < sum + 1; j++) {
66-
dp[i][j] = dp[i - 1][j];
67-
if (j >= nums[i - 1]) {
68-
dp[i][j] = (dp[i][j] || dp[i - 1][j - nums[i - 1]]);
63+
dp[0][j] = false;
64+
}
65+
66+
for (int i = 1; i < n + 1; i++) {
67+
for (int j = 1; j < sum + 1; j++) {
68+
dp[i][j] = dp[i - 1][j];
69+
if (j >= nums[i - 1]) {
70+
dp[i][j] = (dp[i][j] || dp[i - 1][j - nums[i - 1]]);
71+
}
6972
}
7073
}
71-
}
7274

73-
return dp[n][sum];
75+
return dp[n][sum];
76+
}
7477
}
7578

7679
}

src/test/java/com/fishercoder/_416Test.java

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,34 +6,31 @@
66

77
import static org.junit.Assert.assertEquals;
88

9-
/**
10-
* Created by stevesun on 6/5/17.
11-
*/
129
public class _416Test {
13-
private static _416 test;
10+
private static _416.Solution1 solution1;
1411
private static int[] nums;
1512

1613
@BeforeClass
1714
public static void setup() {
18-
test = new _416();
15+
solution1 = new _416.Solution1();
1916
}
2017

2118
@Test
2219
public void test1() {
2320
nums = new int[]{1, 5, 11, 5};
24-
assertEquals(true, test.canPartition(nums));
21+
assertEquals(true, solution1.canPartition(nums));
2522
}
2623

2724
@Test
2825
public void test2() {
2926
nums = new int[]{1, 2, 3, 5};
30-
assertEquals(false, test.canPartition(nums));
27+
assertEquals(false, solution1.canPartition(nums));
3128
}
3229

3330
@Test
3431
public void test3() {
3532
nums = new int[]{1, 2, 3, 4, 5, 6, 7};
36-
assertEquals(true, test.canPartition(nums));
33+
assertEquals(true, solution1.canPartition(nums));
3734
}
3835

3936
}

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy