嵌套列表加权和 II

364. 嵌套列表加权和 II

[!danger]

  • 339题:深度越深,权重越大
  • 364题:深度越深,权重越小
示例:[1,[4,[6]]]

最大深度 = 3
权重计算:
- 1 在深度1:1 × 3 = 3    (权重 = 3)
- 4 在深度2:4 × 2 = 8    (权重 = 2)
- 6 在深度3:6 × 1 = 6    (权重 = 1)

结果:3 + 8 + 6 = 17

339. 嵌套列表加权和 基本一样,但是需要先计算一遍最大深度

var depthSumInverse = function (nestedList) {
    // 1. 先获取最大深度
    let maxDepth = 1;
    function getDepth(root, depth) {
        maxDepth = Math.max(maxDepth, depth);
        for (let item of root) {
            if (!item.isInteger()) {
                getDepth(item.getList(), depth + 1);
            }
        }
    }
    getDepth(nestedList, 1);

    // 2. 计算加权和
    let res = 0;
    function traverse(root, depth) {
        for (let item of root) {
            if (item.isInteger()) {
                // 关键区别:权重 = maxDepth - depth + 1
                res += item.getInteger() * (maxDepth - depth + 1);
            } else {
                traverse(item.getList(), depth + 1);
            }
        }
    }
    traverse(nestedList, 1);
    return res;
};