rustgym/leetcode/
_339_nested_list_weight_sum.rs1struct 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}