Skip to content

Commit 0d171d7

Browse files
committed
Add problem 2374: Node With Highest Edge Score
1 parent 1a74528 commit 0d171d7

File tree

3 files changed

+58
-0
lines changed

3 files changed

+58
-0
lines changed

src/lib.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1766,6 +1766,7 @@ pub mod problem_2368_reachable_nodes_with_restrictions;
17661766
pub mod problem_2369_check_if_there_is_a_valid_partition_for_the_array;
17671767
pub mod problem_2370_longest_ideal_subsequence;
17681768
pub mod problem_2373_largest_local_values_in_a_matrix;
1769+
pub mod problem_2374_node_with_highest_edge_score;
17691770

17701771
#[cfg(test)]
17711772
mod test_utilities;
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
pub struct Solution;
2+
3+
// ------------------------------------------------------ snip ------------------------------------------------------ //
4+
5+
impl Solution {
6+
pub fn edge_score(edges: Vec<i32>) -> i32 {
7+
let mut sums = vec![0_u32; edges.len()].into_boxed_slice();
8+
9+
(0..).zip(edges).for_each(|(from, to)| sums[to as u32 as usize] += from);
10+
11+
let mut result = 0;
12+
let mut max_sum = 0;
13+
14+
(0..).zip(&*sums).for_each(|(i, &sum)| {
15+
if sum > max_sum {
16+
max_sum = sum;
17+
result = i;
18+
}
19+
});
20+
21+
result
22+
}
23+
}
24+
25+
// ------------------------------------------------------ snip ------------------------------------------------------ //
26+
27+
impl super::Solution for Solution {
28+
fn edge_score(edges: Vec<i32>) -> i32 {
29+
Self::edge_score(edges)
30+
}
31+
}
32+
33+
#[cfg(test)]
34+
mod tests {
35+
#[test]
36+
fn test_solution() {
37+
super::super::tests::run::<super::Solution>();
38+
}
39+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
pub mod iterative;
2+
3+
pub trait Solution {
4+
fn edge_score(edges: Vec<i32>) -> i32;
5+
}
6+
7+
#[cfg(test)]
8+
mod tests {
9+
use super::Solution;
10+
11+
pub fn run<S: Solution>() {
12+
let test_cases = [(&[1, 0, 0, 0, 0, 7, 7, 5] as &[_], 7), (&[2, 0, 0, 2], 0)];
13+
14+
for (edges, expected) in test_cases {
15+
assert_eq!(S::edge_score(edges.to_vec()), expected);
16+
}
17+
}
18+
}

0 commit comments

Comments
 (0)