1
0
Fork 0
mirror of https://gitlab.com/mfocko/LeetCode.git synced 2024-09-19 17:56:55 +02:00
LeetCode/rs/binary-subarrays-with-sum.rs
Matej Focko 8717014c90
rs: add «930. Binary Subarrays With Sum»
Signed-off-by: Matej Focko <mfocko@redhat.com>
2024-03-14 23:37:08 +01:00

34 lines
782 B
Rust

impl Solution {
pub fn num_subarrays_with_sum(nums: Vec<i32>, goal: i32) -> i32 {
let mut subarrays = 0;
let mut sum = 0;
let mut zeros = 0;
let mut l = 0;
for r in 0..nums.len() {
sum += nums[r];
while l < r && (nums[l] == 0 || sum > goal) {
match nums[l] {
0 => {
zeros += 1;
}
1 => {
zeros = 0;
}
_ => unreachable!("either 0 or 1s"),
}
sum -= nums[l];
l += 1;
}
if sum == goal {
subarrays += 1 + zeros;
}
}
subarrays
}
}