Skip to content

Commit 6f0d1b1

Browse files
committed
src/bin/subarray-sum-equals-k.rs
1 parent 242fbad commit 6f0d1b1

File tree

1 file changed

+22
-0
lines changed

1 file changed

+22
-0
lines changed

Diff for: src/bin/subarray-sum-equals-k.rs

+22
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
fn main() {
2+
assert_eq!(39, Solution::subarray_sum(vec![0, 0, 0, 0, 1, -1, 0, 0, 1, 1, 0, 0, 2, -2, 2], 2));
3+
}
4+
5+
struct Solution;
6+
7+
impl Solution {
8+
pub fn subarray_sum(nums: Vec<i32>, k: i32) -> i32 {
9+
let mut sums = std::collections::HashMap::<i32, i32>::new();
10+
sums.insert(0, 1);
11+
let mut sum = 0;
12+
let mut count = 0;
13+
for &i in nums.iter() {
14+
sum += i;
15+
if let Some(s) = sums.get(&(sum - k)) {
16+
count += *s
17+
}
18+
sums.entry(sum).and_modify(|x| *x += 1).or_insert(1);
19+
}
20+
count
21+
}
22+
}

0 commit comments

Comments
 (0)