diff --git a/rs/count-subarrays-where-max-element-appears-at-least-k-times.rs b/rs/count-subarrays-where-max-element-appears-at-least-k-times.rs new file mode 100644 index 0000000..fa9d46f --- /dev/null +++ b/rs/count-subarrays-where-max-element-appears-at-least-k-times.rs @@ -0,0 +1,25 @@ +impl Solution { + pub fn count_subarrays(nums: Vec, mut k: i32) -> i64 { + let m = *nums.iter().max().expect("1 ≤ nums.len() ≤ 10⁵"); + let mut counter: i64 = 0; + + let mut i: usize = 0; + for j in 0..nums.len() { + if nums[j] == m { + k -= 1; + } + + while k == 0 { + if nums[i] == m { + k += 1; + } + + i += 1; + } + + counter += i as i64; + } + + counter + } +}