rs: add «621. Task Scheduler»

Signed-off-by: Matej Focko <mfocko@redhat.com>
This commit is contained in:
Matej Focko 2024-03-20 00:16:00 +01:00
parent 5e51f2ba08
commit 5549cdd7d8
Signed by: mfocko
GPG key ID: 7C47D46246790496

21
rs/task-scheduler.rs Normal file
View file

@ -0,0 +1,21 @@
use std::cmp;
use std::collections::HashMap;
impl Solution {
pub fn least_interval(tasks: Vec<char>, n: i32) -> i32 {
let mut freqs: HashMap<char, i32> = HashMap::new();
let mut found_max = 0;
for c in &tasks {
let mut counter = freqs.entry(*c).or_insert(0);
*counter += 1;
found_max = cmp::max(found_max, *counter);
}
let mut time = (1 + n) * (found_max - 1);
time += freqs.values().filter(|&&c| c == found_max).count() as i32;
cmp::max(tasks.len().try_into().unwrap(), time)
}
}