Leetcode 339 Solution

This article provides solution to leetcode question 339 (nested-list-weight-sum)

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

Solution

/**
 * // This is the interface that allows for creating nested lists.
 * // You should not implement it, or speculate about its implementation
 * class NestedInteger {
 *   public:
 *     // Return true if this NestedInteger holds a single integer, rather than a nested list.
 *     bool isInteger() const;
 *
 *     // Return the single integer that this NestedInteger holds, if it holds a single integer
 *     // The result is undefined if this NestedInteger holds a nested list
 *     int getInteger() const;
 *
 *     // Return the nested list that this NestedInteger holds, if it holds a nested list
 *     // The result is undefined if this NestedInteger holds a single integer
 *     const vector<NestedInteger> &getList() const;
 * };
 */
class Solution {
public:
    int depthSum(NestedInteger& integer, int depth)
    {
        int res = 0;
        if (integer.isInteger())
            res += depth * integer.getInteger();
        else
        {
            auto& subintegers = integer.getList();
            for (auto subinteger : subintegers)
                res += depthSum(subinteger, depth + 1);
        }
        return res;
    }

    int depthSum(vector<NestedInteger>& nestedList)
    {
        int res = 0;

        for (auto integer : nestedList)
            res += depthSum(integer, 1);

        return res;
    }
};