@@ -14,47 +14,51 @@ public static class Solution1 {
14
14
* To achieve this, we just need to go through the array,
15
15
* calculate the current sum and save number of all seen PreSum to a HashMap.
16
16
* <p>
17
- * Time complexity O(n), Space complexity O(n).
17
+ * Time complexity: O(n);
18
+ * Space complexity: O(n).
18
19
*/
19
20
public int subarraySum (int [] nums , int k ) {
20
- Map <Integer , Integer > preSum = new HashMap ();
21
+ Map <Integer , Integer > preSumFrequencyMap = new HashMap ();
21
22
int sum = 0 ;
22
- int result = 0 ;
23
- preSum .put (0 , 1 );
23
+ int count = 0 ;
24
+ preSumFrequencyMap .put (0 , 1 );
24
25
for (int i = 0 ; i < nums .length ; i ++) {
25
26
sum += nums [i ];
26
- if (preSum .containsKey (sum - k )) {
27
- result += preSum .get (sum - k );
27
+ if (preSumFrequencyMap .containsKey (sum - k )) {
28
+ count += preSumFrequencyMap .get (sum - k );
28
29
}
29
- preSum .put (sum , preSum .getOrDefault (sum , 0 ) + 1 );
30
+ preSumFrequencyMap .put (sum , preSumFrequencyMap .getOrDefault (sum , 0 ) + 1 );
30
31
}
31
- return result ;
32
+ return count ;
32
33
}
33
34
}
34
35
35
36
public static class Solution2 {
36
37
/**
37
38
* My completely original solution on 10/14/2021.
38
39
* Again, using a pen and paper to visualize your thought process just clears out all ambiguities.
40
+ * <p>
41
+ * Time: O(n^2)
42
+ * Space: O(n)
39
43
*/
40
44
public int subarraySum (int [] nums , int k ) {
41
- int ans = 0 ;
45
+ int count = 0 ;
42
46
int [] prefixSum = new int [nums .length ];
43
47
prefixSum [0 ] = nums [0 ];
44
48
for (int i = 1 ; i < nums .length ; i ++) {
45
49
prefixSum [i ] = prefixSum [i - 1 ] + nums [i ];
46
50
}
47
51
for (int i = 0 ; i < nums .length ; i ++) {
48
52
if (prefixSum [i ] == k ) {
49
- ans ++;
53
+ count ++;
50
54
}
51
55
for (int j = 0 ; j < i ; j ++) {
52
56
if (prefixSum [i ] - prefixSum [j ] == k ) {
53
- ans ++;
57
+ count ++;
54
58
}
55
59
}
56
60
}
57
- return ans ;
61
+ return count ;
58
62
}
59
63
}
60
64
0 commit comments