Given a nested list of integers, returns
the sum of all integers in the list weighted by their depth * For example, given the list {{1,1},2,{1,1}} the function should return 10 (four 1's at depth 2, one 2 at depth 1) * Given the list {1,{4,{6}}} the function should return 27 (one 1 at depth 1, one 4 at depth 2, and one 6 at depth 3)
/**
* This is the interface that represents nested lists.
* You should not implement it, or speculate about its implementation.
*/
public interface NestedInteger
{
// Returns true if this NestedInteger holds a single integer, rather than a nested list
public boolean isInteger();
// Returns the single integer that this NestedInteger holds, if it holds a single integer
// Returns null if this NestedInteger holds a nested list
public Integer getInteger();
// Returns the nested list that this NestedInteger holds, if it holds a nested list
// Returns null if this NestedInteger holds a single integer
public List getList();
}
int valueit(NestedInteger root, depth) {
int val=0;
if(root.isInteger()) {
val+=n.getInteger();
}
else {
List nlist=n.getList();
for n in nlist {
if(n.isInteger()) {
val+=n.getInteger();
}
else {
val+=valueit(n,depth+1);
}
}
}
return val;
}
int getWeightedSum(const char* str)
{
int sum = 0;
int depth = 0;
for(;*str; str++)
{
if (*str == '{')
{
depth++;
}
else if (*str == '}')
{
depth--;
}
else if (*str != ',')
{
int nested_sum = 0;
while(*str >= '0' && *str <= '9')
{
nested_sum += nested_sum * 10 + (*str - '0');
str++;
}
sum+=nested_sum * depth;
}
}
return sum;
}
No comments:
Post a Comment