Divide Array in Sets of K Consecutive Numbers LeetCode solution in Rust

1
use std::collections::HashMap;
2

3
impl Solution {
4
pub fn is_possible_divide(mut nums: Vec<i32>, k: i32) -> bool {
5
if nums.len() % k as usize != 0 {
6
return false;
7
}
8

9
nums.sort_unstable();
10

11
let mut freq: HashMap<i32, i32> = HashMap::new();
12
nums.iter().for_each(|&num| {
13
*freq.entry(num).or_insert(0) += 1;
14
});
15

16
for num in nums {
17
if freq[&num] != 0 {
18
let occ = freq[&num];
19
for i in num..num + k {
20
match freq.get_mut(&i) {
21
Some(cnt) => {
22
if *cnt < 0 {
23
return false;
24
} else {
25
*cnt -= occ;
26
}
27
}
28
None => return false,
29
}
30
}
31
}
32
}
33
true
34
}
35
}

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0