Given a nested list of integers, return the sum of all integers in the list weighted by their depth.
Each element is either an integer, or a list -- whose elements may also be integers or other lists.
Example 1:
Input: [[1,1],2,[1,1]] Output: 10 Explanation: Four 1's at depth 2, one 2 at depth 1.
Example 2:
Input: [1,[4,[6]]] Output: 27 Explanation: One 1 at depth 1, one 4 at depth 2, and one 6 at depth 3; 1 + 4*2 + 6*3 = 27.
class Solution {
public:
int depthSum(vector<NestedInteger>& nestedList) {
if (nestedList.size() == 0) {
return 0;
}
queue<NestedInteger> q;
for (auto entry : nestedList) {
q.push(entry);
}
int ans = 0;
int height = 0;
while (!q.empty()) {
int size = q.size();
height++;
for (int i = 0; i < size; i++) {
NestedInteger entry = q.front(); q.pop();
if (entry.isInteger()) {
ans += height * entry.getInteger();
} else {
for (auto node : entry.getList()) {
q.push(node);
}
}
}
}
return ans;
}
};
class Solution { public: int depthSumRec(vector<NestedInteger>&nestedList, int dt) { int cur_sum = 0; for(auto &i : nestedList) { if(i.isInteger()) { cur_sum += (i.getInteger()) * dt; } else { cur_sum += depthSumRec(i.getList(), dt + 1); } } return cur_sum; } int depthSum(vector<NestedInteger>& nestedList) { return depthSumRec(nestedList, 1); } };
No comments:
Post a Comment