Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit b4f97ed

Browse files
committedOct 14, 2021
add a solution for 560
1 parent f7f94b2 commit b4f97ed

File tree

2 files changed

+75
-3
lines changed

2 files changed

+75
-3
lines changed
 

‎src/main/java/com/fishercoder/solutions/_560.java

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,4 +32,30 @@ public int subarraySum(int[] nums, int k) {
3232
}
3333
}
3434

35+
public static class Solution2 {
36+
/**
37+
* My completely original solution on 10/14/2021.
38+
* Again, using a pen and paper to visualize your thought process just clears out all ambiguities.
39+
*/
40+
public int subarraySum(int[] nums, int k) {
41+
int ans = 0;
42+
int[] prefixSum = new int[nums.length];
43+
prefixSum[0] = nums[0];
44+
for (int i = 1; i < nums.length; i++) {
45+
prefixSum[i] = prefixSum[i - 1] + nums[i];
46+
}
47+
for (int i = 0; i < nums.length; i++) {
48+
if (prefixSum[i] == k) {
49+
ans++;
50+
}
51+
for (int j = 0; j < i; j++) {
52+
if (prefixSum[i] - prefixSum[j] == k) {
53+
ans++;
54+
}
55+
}
56+
}
57+
return ans;
58+
}
59+
}
60+
3561
}

‎src/test/java/com/fishercoder/_560Test.java

Lines changed: 49 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,9 @@
66

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

9-
/**
10-
* Created by fishercoder on 4/29/17.
11-
*/
129
public class _560Test {
1310
private static _560.Solution1 solution1;
11+
private static _560.Solution2 solution2;
1412
private static int expected;
1513
private static int actual;
1614
private static int[] nums;
@@ -19,6 +17,7 @@ public class _560Test {
1917
@BeforeClass
2018
public static void setup() {
2119
solution1 = new _560.Solution1();
20+
solution2 = new _560.Solution2();
2221
}
2322

2423
@Test
@@ -28,5 +27,52 @@ public void test1() {
2827
expected = 2;
2928
actual = solution1.subarraySum(nums, k);
3029
assertEquals(expected, actual);
30+
actual = solution2.subarraySum(nums, k);
31+
assertEquals(expected, actual);
32+
}
33+
34+
@Test
35+
public void test2() {
36+
nums = new int[]{1, 2, 3};
37+
k = 3;
38+
expected = 2;
39+
actual = solution1.subarraySum(nums, k);
40+
assertEquals(expected, actual);
41+
actual = solution2.subarraySum(nums, k);
42+
assertEquals(expected, actual);
43+
}
44+
45+
@Test
46+
public void test3() {
47+
nums = new int[]{1, 1};
48+
k = 1;
49+
expected = 2;
50+
actual = solution1.subarraySum(nums, k);
51+
assertEquals(expected, actual);
52+
actual = solution2.subarraySum(nums, k);
53+
assertEquals(expected, actual);
3154
}
55+
56+
@Test
57+
public void test4() {
58+
nums = new int[]{0, 0};
59+
k = 0;
60+
expected = 3;
61+
actual = solution1.subarraySum(nums, k);
62+
assertEquals(expected, actual);
63+
actual = solution2.subarraySum(nums, k);
64+
assertEquals(expected, actual);
65+
}
66+
67+
@Test
68+
public void test5() {
69+
nums = new int[]{100, 1, 2, 3, 4};
70+
k = 3;
71+
expected = 2;
72+
actual = solution1.subarraySum(nums, k);
73+
assertEquals(expected, actual);
74+
actual = solution2.subarraySum(nums, k);
75+
assertEquals(expected, actual);
76+
}
77+
3278
}

0 commit comments

Comments
 (0)
Failed to load comments.