small-lambda
Senior Member
C-like:
use std::rc::Rc;
use std::cell::RefCell;
type Node = Rc<RefCell<TreeNode>>;
impl Solution {
pub fn kth_largest_level_sum(root: Option<Node>, k: i32) -> i64 {
let mut level_sums = vec![0; 10usize.pow(5)];
let k = k as usize;
fn dfs(node: Option<Node>, level_sums: &mut [i64], level: usize) -> usize {
match node {
Some(node) => {
let node = node.borrow();
level_sums[level] += node.val as i64;
let left = node.left.as_ref().map(|left| left.clone());
let right = node.right.as_ref().map(|right| right.clone());
let left_level = dfs(left, level_sums, level + 1);
let right_level = dfs(right, level_sums, level + 1);
left_level.max(right_level)
},
None => level
}
}
let max_level = dfs(root, &mut level_sums, 0);
if max_level < k {
return -1;
}
level_sums.select_nth_unstable_by(k - 1, |a, b| b.cmp(a));
level_sums[k - 1]
}
}



Tầm này thì qua CF quẩy chứ Leetcode làm gì nữa