Skip to main content

rustgym/leetcode/
_339_nested_list_weight_sum.rs

1struct Solution;
2use rustgym_util::*;
3
4impl Solution {
5    fn depth_sum_r(nested_list: &NestedInteger, level: i32) -> i32 {
6        match nested_list {
7            NestedInteger::Int(x) => level * x,
8            NestedInteger::List(v) => v
9                .iter()
10                .fold(0, |acc, x| acc + Self::depth_sum_r(x, level + 1)),
11        }
12    }
13    fn depth_sum(nested_list: Vec<NestedInteger>) -> i32 {
14        nested_list
15            .iter()
16            .fold(0, |acc, x| acc + Self::depth_sum_r(x, 1))
17    }
18}
19
20#[test]
21fn test() {
22    let list = vec![
23        nested_integer!("[1,1]"),
24        nested_integer!("2"),
25        nested_integer!("[1,1]"),
26    ];
27    assert_eq!(Solution::depth_sum(list), 10);
28    let list = vec![nested_integer!("1"), nested_integer!("[4,[6]]")];
29    assert_eq!(Solution::depth_sum(list), 27);
30}