0364. Nested List Weight Sum II

https://leetcode.com/problems/nested-list-weight-sum-ii

Description

You are given a nested list of integers nestedList. Each element is either an integer or a list whose elements may also be integers or other lists.

The depth of an integer is the number of lists that it is inside of. For example, the nested list [1,[2,2],[[3],2],1] has each integer's value set to its depth. Let maxDepth be the maximum depth of any integer.

The weight of an integer is maxDepth - (the depth of the integer) + 1.

Return the sum of each integer in nestedList multiplied by its weight.

Example 1:

**Input:** nestedList = [[1,1],2,[1,1]]
**Output:** 8
**Explanation:** Four 1's with a weight of 1, one 2 with a weight of 2.
1*1 + 1*1 + 2*2 + 1*1 + 1*1 = 8

Example 2:

**Input:** nestedList = [1,[4,[6]]]
**Output:** 17
**Explanation:** One 1 at depth 3, one 4 at depth 2, and one 6 at depth 1.
1*3 + 4*2 + 6*1 = 17

Constraints:

  • 1 <= nestedList.length <= 50

  • The values of the integers in the nested list is in the range [-100, 100].

  • The maximum depth of any integer is less than or equal to 50.

ac

class Solution {
    public int depthSumInverse(List<NestedInteger> nestedList) {
        int unweighted = 0, res = 0;
        while (nestedList.size() > 0) {
            List<NestedInteger> next = new ArrayList<>();
            for (NestedInteger ni : nestedList) {
                if (ni.isInteger()) unweighted += ni.getInteger();
                else next.addAll(ni.getList());
            }
            res += unweighted;
            nestedList = next;
        }

        return res;
    }
}

/*
1) use 2 vars: weighted/unweighted; 2) recursion until no more list, each time += unweighted, as they go one level further, they add once more;
*/

Last updated