Skip to content

Commit 1acc478

Browse files
add Positives solution
1 parent 3b47629 commit 1acc478

File tree

1 file changed

+49
-0
lines changed

1 file changed

+49
-0
lines changed

medium300/Positives.java

+49
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
package medium300;
2+
3+
import java.util.*;
4+
5+
public class Positives {
6+
7+
int [][]dp = new int[51][20001];
8+
Set<Integer> s = new HashSet<>();
9+
int res(int []a, int ind, int n, int sum){
10+
//System.out.println(ind + " " + sum + " " + dp[ind][sum+10000]);
11+
if (dp[ind][sum+10000] != -1) return dp[ind][sum+10000];
12+
//System.out.println(ind + " " + sum);
13+
if (ind == n && sum >= 0) {
14+
dp[ind][sum + 10000] = 0;
15+
s.add(sum);
16+
return 1;
17+
}
18+
else if (ind==n) {
19+
dp[ind][sum + 10000] = 0;
20+
return 0;
21+
}
22+
int left = res(a, ind+1, n, sum+a[ind]), right = res(a, ind+1, n, sum-a[ind]);
23+
return dp[ind][sum+10000] = left+right;
24+
25+
}
26+
27+
public int getPositiveCount(int[] numbers) {
28+
29+
s.clear();
30+
for (int i=0; i<=numbers.length; i++)
31+
for (int j=0; j<20001; j++) dp[i][j] = -1;
32+
res(numbers, 0, numbers.length, 0);
33+
return s.size();
34+
}
35+
36+
// public static void main(String[] args) {
37+
// Positives p = new Positives();
38+
// System.out.println(p.getPositiveCount(new int[]{13, 2, 17, 11, 18}));
39+
// //System.out.println(p.getPositiveCount(new int[]{3, 2, 1}));
40+
// System.out.println(p.getPositiveCount(
41+
// new int[]{40, 66, 63, 73, 52, 4, 47, 36, 100, 83, 62, 76, 13,
42+
// 31, 28, 1, 93, 74}));
43+
// System.out.println(p.getPositiveCount(
44+
//
45+
// new int[]{70, 77, 78, 85, 77, 66, 82, 80, 74, 62, 92, 20, 52,
46+
// 82, 9, 61, 47, 84, 43, 59,43,1,3,5,3,5,3,4,3,4,3,4,5,45,3,2,2,4,5,5,3,2,2,3,4,3,3,4,5}));
47+
// }
48+
}
49+

0 commit comments

Comments
 (0)